PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

Correzione:"l'operatore non esiste:intero || intero” in PostgreSQL

Se ottieni l'operatore “non esiste:intero || intero" in PostgreSQL, probabilmente è perché stai cercando di concatenare due numeri.

Se vuoi davvero concatenare due numeri, il modo più semplice per superare questo problema è eseguire prima il cast di almeno uno di essi su un tipo di dati stringa.

Un altro modo per farlo è usare CONCAT() funzione.

Esempio di errore

Ecco un esempio di codice che causa questo errore:

SELECT 123 || 456;

Risultato:

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.

Soluzione 1

Ecco un modo rapido per superare questo problema:

SELECT CAST(123 AS varchar(3)) || 456;

Risultato:

123456

Sebbene sia vero che avremmo potuto eseguire il cast di entrambi i numeri in una stringa, non è necessario. Finché uno degli operandi è una stringa, l'operatore di concatenazione pipe sarà in grado di concatenarli.

Soluzione 2

Un altro modo per farlo è usare CONCAT() funzione per eseguire la concatenazione:

SELECT CONCAT(123, 456);

Risultato:

123456

Questa funzione funziona sui numeri senza la necessità di convertirli in una stringa. La funzione esegue automaticamente questa operazione (concatena le rappresentazioni testuali dei suoi argomenti per impostazione predefinita).