Si obtiene el operador “no existe:entero || entero” en PostgreSQL, probablemente se deba a que está tratando de concatenar dos números.
Si realmente desea concatenar dos números, la forma más fácil de superar este problema es convertir primero al menos uno de ellos en un tipo de datos de cadena.
Otra forma de hacerlo es usar CONCAT()
función.
Ejemplo de error
Aquí hay un ejemplo de código que causa este error:
SELECT 123 || 456;
Resultado:
ERROR: operator does not exist: integer || integer LINE 1: SELECT 123 || 456; ^ HINT: No operator matches the given name and argument types. You might need to add explicit type casts.
Solución 1
Esta es una forma rápida de solucionar este problema:
SELECT CAST(123 AS varchar(3)) || 456;
Resultado:
123456
Si bien es cierto que podríamos haber convertido ambos números en una cadena, no es necesario. Siempre que uno de los operandos sea una cadena, el operador de concatenación de tuberías podrá concatenarlos.
Solución 2
Otra forma de hacerlo es usar CONCAT()
función para hacer la concatenación:
SELECT CONCAT(123, 456);
Resultado:
123456
Esta función funciona con números sin necesidad de convertir ninguno de ellos en una cadena. La función hace esto automáticamente (concatena las representaciones de texto de sus argumentos por defecto).