PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Fix:„Operator existiert nicht:Ganzzahl || Ganzzahl“ in PostgreSQL

Wenn Sie den „operator is not exist:integer || integer“-Fehler in PostgreSQL, liegt es wahrscheinlich daran, dass Sie versuchen, zwei Zahlen zu verketten.

Wenn Sie wirklich zwei Zahlen verketten möchten, können Sie dieses Problem am einfachsten lösen, indem Sie mindestens eine davon zuerst in einen String-Datentyp umwandeln.

Eine andere Möglichkeit ist die Verwendung von CONCAT() Funktion.

Fehlerbeispiel

Hier ist ein Codebeispiel, das diesen Fehler verursacht:

SELECT 123 || 456;

Ergebnis:

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ösung 1

Hier ist eine schnelle Möglichkeit, dieses Problem zu lösen:

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

Ergebnis:

123456

Es stimmt zwar, dass wir beide Zahlen in eine Zeichenfolge hätten umwandeln können, aber das ist nicht notwendig. Solange einer der Operanden ein String ist, kann der Pipe-Verkettungsoperator sie verketten.

Lösung 2

Eine andere Möglichkeit ist die Verwendung von CONCAT() Funktion für die Verkettung:

SELECT CONCAT(123, 456);

Ergebnis:

123456

Diese Funktion arbeitet mit Zahlen, ohne dass sie in eine Zeichenfolge konvertiert werden müssen. Die Funktion führt dies automatisch aus (standardmäßig verkettet sie die Textdarstellungen ihrer Argumente).