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 ?


Respostas:


593

Use a função de conversão.

SELECT CONVERT(varchar(10), field_name) FROM table_name

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


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

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

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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.