to_number to_char postgres ejemplos convertir column cast postgresql casting integer varchar

to_char - PostgreSQL: ERROR: el operador no existe: entero=carácter variable



to_char postgresql ejemplos (1)

Creo que te está diciendo exactamente lo que está mal. No puede comparar un número entero con un varchar. PostgreSQL es estricto y no hace ningún tipo de encasillamiento mágico para ti. Supongo que SQLServer hace typecasting automágicamente (lo cual es algo malo).

Si desea comparar estas dos bestias diferentes, tendrá que lanzar una a la otra utilizando la sintaxis de conversión :: .

Algo en esta línea:

create view view1 as select table1.col1,table2.col1,table3.col3 from table1 inner join table2 inner join table3 on table1.col4::varchar = table2.col5 /* Here col4 of table1 is of "integer" type and col5 of table2 is of type "varchar" */ /* ERROR: operator does not exist: integer = character varying */ ....;

Observe la conversión de tipos varchar en table1.col4.

También tenga en cuenta que el encasillamiento posiblemente haga que su índice en esa columna no se pueda utilizar y tenga una penalización de rendimiento, lo cual es bastante malo. Una solución aún mejor sería ver si puede cambiar permanentemente uno de los dos tipos de columnas para que coincida con el otro. Cambie literalmente el diseño de su base de datos.

O bien, podría crear un índice sobre los valores emitidos utilizando una función personalizada e inmutable que arroje los valores en la columna. Pero esto también puede resultar poco óptimo (pero mejor que el casting en vivo).

Aquí intento crear una vista como se muestra a continuación en el ejemplo:

Ejemplo:

create view view1 as select table1.col1,table2.col1,table3.col3 from table1 inner join table2 inner join table3 on table1.col4 = table2.col5 /* Here col4 of table1 is of "integer" type and col5 of table2 is of type "varchar" */ /* ERROR: operator does not exist: integer = character varying */ ....;

Nota: la misma consulta ejecutada en el servidor sql pero obteniendo el error anterior en postgreSQL.