Cast en postgres operator does not exist: character varying = integer

publicado por: Anonymous

Saludos,
me encuentro realizando una consulta SQL. La columna a la que le aplico la condición WHERE es de tipo character varying, pero el dato con el que completo la condición es un entero.

SELECT * FROM tablaCodigo WHERE codigo = 123

Obteniendo el siguiente mensaje:

No operator matches the given name and argument type(s). You might need to add explicit type casts.

Se que debo hacer un casteo en el 123 para que se tome como character varying.
Cual es la forma correcta de hacerlo?
gracias

solución

Cuando escribes

SELECT * FROM tablaCodigo WHERE codigo = 123

Lo que estás haciendo no está claro. Se puede interpretar de dos maneras:

to_number(codigo) = 123

o

codigo = '123'

el primer caso haría que son iguales ‘0123’ y ‘123’ y ‘123.0’. Es por eso que hay que ser explicito. Otras formas de escribirlo son:

SELECT * FROM tablaCodigo WHERE codigo::integer = 123

o

SELECT * FROM tablaCodigo WHERE codigo = 123::text
Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *