Se você obtiver o operador “não existe:integer || integer” no PostgreSQL, provavelmente é porque você está tentando concatenar dois números.
Se você realmente deseja concatenar dois números, a maneira mais fácil de superar esse problema é converter pelo menos um deles em um tipo de dados string primeiro.
Outra maneira de fazer isso é usar o
CONCAT()
função. Exemplo de erro
Aqui está um exemplo de código que causa esse erro:
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.
Solução 1
Aqui está uma maneira rápida de superar esse problema:
SELECT CAST(123 AS varchar(3)) || 456;
Resultado:
123456
Embora seja verdade que poderíamos converter os dois números em uma string, isso não é necessário. Desde que um dos operandos seja uma string, o operador de concatenação de pipes poderá concatená-los.
Solução 2
Outra maneira de fazer isso é usar o
CONCAT()
função para fazer a concatenação:SELECT CONCAT(123, 456);
Resultado:
123456
Esta função funciona em números sem a necessidade de converter nenhum deles em uma string. A função faz isso automaticamente (concatena as representações de texto de seus argumentos por padrão).