Hvis du får "operatoren eksisterer ikke:heltal || heltal" fejl i PostgreSQL, er det sandsynligvis fordi du forsøger at sammenkæde to tal.
Hvis du virkelig ønsker at sammenkæde to numre, er den nemmeste måde at løse dette problem på at caste mindst et af dem til en strengdatatype først.
En anden måde at gøre det på er at bruge CONCAT()
funktion.
Eksempel på fejl
Her er et eksempel på kode, der forårsager denne fejl:
SELECT 123 || 456;
Resultat:
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.
Løsning 1
Her er en hurtig måde at løse dette problem på:
SELECT CAST(123 AS varchar(3)) || 456;
Resultat:
123456
Selvom det er rigtigt, at vi kunne have støbt begge tal til en streng, er det ikke nødvendigt. Så længe en af operanderne er en streng, vil rørsammenkædningsoperatøren være i stand til at sammenkæde dem.
Løsning 2
En anden måde at gøre det på er at bruge CONCAT()
funktion for at udføre sammenkædningen:
SELECT CONCAT(123, 456);
Resultat:
123456
Denne funktion virker på tal uden behov for at konvertere nogen af dem til en streng. Funktionen gør dette automatisk (den sammenkæder tekstrepræsentationerne af dens argumenter som standard).