Om du får "operatorn existerar inte:heltal || heltal" i PostgreSQL, beror det förmodligen på att du försöker sammanfoga två tal.
Om du verkligen vill sammanfoga två siffror är det enklaste sättet att lösa problemet att först casta minst ett av dem till en strängdatatyp.
Ett annat sätt att göra det är att använda CONCAT()
funktion.
Exempel på fel
Här är ett exempel på kod som orsakar detta fel:
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
Här är ett snabbt sätt att lösa problemet:
SELECT CAST(123 AS varchar(3)) || 456;
Resultat:
123456
Även om det är sant att vi kunde ha kastat båda siffrorna till en sträng, är det inte nödvändigt. Så länge en av operanderna är en sträng, kommer rörsammansättningsoperatören att kunna sammanfoga dem.
Lösning 2
Ett annat sätt att göra det är att använda CONCAT()
funktion för att göra sammanlänkningen:
SELECT CONCAT(123, 456);
Resultat:
123456
Den här funktionen fungerar på tal utan att behöva konvertera något av dem till en sträng. Funktionen gör detta automatiskt (den sammanfogar textrepresentationerna av dess argument som standard).