Convertir INT a VARCHAR SQL

341

Estoy usando Sybase y estoy haciendo una selección que me devuelve una columna llamada "iftype", pero su tipo es int y necesito convertirlo en varchar. Cuando intento hacer la selección sin la función de conversión, aparece este error:

Código de error 257, estado SQL 37000: no se permite la conversión implícita del tipo de datos 'VARCHAR' a 'INT'. Use la función CONVERTIR para ejecutar esta consulta.

No sé cómo implementar la función CONVERT. ¿Alguien puede ayudarme, por favor?

Murilo
fuente
55
Creo que necesita esto: msdn.microsoft.com/en-us/library/ms187928.aspx
Lajos Veres

Respuestas:

593

Utiliza la función de conversión.

SELECT CONVERT(varchar(10), field_name) FROM table_name
Tobberoth
fuente
8
De acuerdo con el error, es VARCHARa INT, pero estoy respondiendo a su pregunta, no el mensaje de error.
Tobberoth
2
Gracias. Pero ahora tengo otro error. Cuando intento hacer este tipo de Select: SELECT CONVERT (varchar (10), field_name) FROM table_name. O incluso el normal como: SELECT field_name FROM table_name. Ambos son correctos. No se porque. Pero cuando trato de hacer un "dónde" al final de la selección, usando la conversión o no, obtengo el mismo error: no se permite la conversión implícita del tipo de datos 'VARCHAR' a 'INT'. Use la función CONVERTIR para ejecutar esta consulta
Murilo
3
@Murilo Eso es porque el error no es de lo que piensas. El error le dice que su código está tratando de usar un varchardonde intse necesita un. Necesita escribir su declaración SQL real para que podamos ayudarlo.
Tobberoth
14
@Tobberoth, por lo que vale, acabo de aterrizar aquí buscando en Google. Parte del valor de SO es obtener respuestas a casi cualquier pregunta, incluso las básicas.
KyleMit
66
Creo que debería ser varchar(11)en caso de que el número sea un número negativo grande.
Trispedó el
100

Usa la STRfunción:

SELECT STR(field_name) FROM table_name

Argumentos

expresión_ flotante

Es una expresión de tipo de datos numérico (flotante) aproximado con un punto decimal.

longitud

Es la longitud total. Esto incluye punto decimal, signo, dígitos y espacios. El valor predeterminado es 10.

decimal

Es el número de lugares a la derecha del punto decimal. el decimal debe ser menor o igual que 16. Si el decimal es mayor que 16, el resultado se trunca a dieciséis lugares a la derecha del punto decimal.

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

Mahdi
fuente
3
STR()debería ser la respuesta correcta, es más simple y menos propenso a errores que las alternativas.
HerrimanCoder
77
Por alguna extraña razón, esto no funcionó para mí, ya que estaba agregando una pestaña delante del texto, no tengo idea de por qué. Sin embargo, la solución seleccionada funcionó.
Mayo
3
espacios de almohadillas str en el frente del número convertido que lo hace inútil
m12lrpv
13
Utilice LTRIM (STR ())
ashilon
2
STR () proporciona espacios en blanco en el frente de la variable que convierte en cadena. Puede ser una buena elección convertir las variables decimales, pero no para Int.
Ebleme
23

Puedes usar la CASTfunción:

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

En realidad no necesitas usar STR o Convert. Simplemente seleccione 'xxx' + LTRIM (1) hace el trabajo. Posiblemente, LTRIM usa Convert o STR debajo del capó.

LTRIM también elimina la necesidad de proporcionar longitud y, por lo general, 10 por defecto es lo suficientemente bueno para la conversión de entero a cadena.

SELECT LTRIM(ColumnName) FROM TableName
PAS
fuente
0

CONVERT(DATA_TYPE , Your_Column)es la sintaxis para el método CONVERT en SQL. Desde esta función de conversión podemos convertir los datos de la Columna que está en el lado derecho de la coma (,) al tipo de datos en el lado izquierdo de la coma (,). Vea el ejemplo a continuación.

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