Conversão INT para VARCHAR SQL

341

Estou usando o Sybase e estou fazendo um select que retorna uma coluna chamada "iftype", mas seu tipo é int e preciso converter em varchar. Quando tento fazer a seleção sem a função de conversão, recebo este erro:

Código de erro 257, estado SQL 37000: conversão implícita do tipo de dados 'VARCHAR' para 'INT' não é permitida. Use a função CONVERT para executar esta consulta.

Não sei como implementar a função CONVERT. Alguém pode me ajudar por favor ?

Murilo
fonte
5
Acho que você precisa isto: msdn.microsoft.com/en-us/library/ms187928.aspx
Lajos Veres

Respostas:

593

Use a função de conversão.

SELECT CONVERT(varchar(10), field_name) FROM table_name
Tobberoth
fonte
8
De acordo com o erro, é VARCHARa INTmas eu estou respondendo a sua pergunta, não a mensagem de erro.
amigos estão dizendo sobre tabberoth
2
Obrigado. Mas agora eu tenho outro erro. Quando tento fazer esse tipo de Select: SELECT CONVERT (varchar (10), field_name) FROM table_name. Ou até o normal, como: SELECT nome_campo FROM nome_tabela. Ambos estão corretos. Eu não sei porque. Mas quando tento mas um "onde" no final da seleção, usando ou não o conversor, recebo o mesmo erro: Não é permitida a conversão implícita do tipo de dados 'VARCHAR' para 'INT'. Use a função CONVERT para executar esta consulta
Murilo
3
@ Murilo Isso é porque o erro não é do que você pensa. O erro informa que seu código está tentando usar um varcharonde inté necessário. Você precisa escrever sua instrução SQL real para ajudá-lo.
Tobberoth
14
@ Tobberoth, pelo que vale, acabei de chegar aqui pesquisando no Google. Parte do valor da SO é obter respostas para quase todas as perguntas, mesmo as básicas.
precisa saber é o seguinte
6
Eu acho que deveria ser varchar(11)caso o número seja um número negativo grande.
Trisped
100

Use a STRfunção:

SELECT STR(field_name) FROM table_name

Argumentos

expressão flutuante

É uma expressão do tipo de dados numérico aproximado (flutuante) com um ponto decimal.

comprimento

É o comprimento total. Isso inclui ponto decimal, sinal, dígitos e espaços. O padrão é 10.

decimal

É o número de casas à direita do ponto decimal. decimal deve ser menor ou igual a 16. Se decimal for maior que 16, o resultado será truncado para dezesseis casas à direita do ponto decimal.

fonte: https://msdn.microsoft.com/en-us/library/ms189527.aspx

Mahdi
fonte
3
STR()deve ser a resposta correta, é mais simples e menos suscetível a erros do que as alternativas.
precisa
7
Por alguma estranha razão, isso não funcionou para mim, pois estava adicionando uma guia na frente do texto, sem ideia do porquê. A solução selecionada funcionou.
MaQy
3
str almofadas espaços na frente do número convertido tornando-se inútil
m12lrpv
13
Use LTRIM (STR ())
ashilon
2
STR () fornece espaços em branco na frente da variável que você converte em string. Pode ser uma boa escolha converter variáveis ​​decimais, mas não para Int.
Ebleme
23

Você pode usar a CASTfunção:

SELECT CAST(your_column_name AS varchar(10)) FROM your_table_name
Hamid Heydarian
fonte
3

Na verdade, você não precisa usar STR ou Convert. Basta selecionar 'xxx' + LTRIM (1) faz o trabalho. Possivelmente, o LTRIM usa Convert ou STR sob o capô.

O LTRIM também remove a necessidade de fornecer comprimento e, normalmente, o padrão 10 é bom o suficiente para a conversão de número inteiro em string.

SELECT LTRIM(ColumnName) FROM TableName
PAS
fonte
0

CONVERT(DATA_TYPE , Your_Column)é a sintaxe do método CONVERT no SQL. A partir desta função de conversão, podemos converter os dados da coluna que está no lado direito da vírgula (,) para o tipo de dados no lado esquerdo da vírgula (,). Veja o exemplo abaixo.

SELECT CONVERT (VARCHAR(10), ColumnName) FROM TableName
Tharuka
fonte