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