PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Correção:“operador não existe:integer || inteiro” no PostgreSQL


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).