sql >> Database >  >> RDS >> PostgreSQL

Fix:“operator bestaat niet:geheel getal || geheel getal” in PostgreSQL

Als u de "operator krijgt, bestaat niet:integer || integer" in PostgreSQL, komt dit waarschijnlijk omdat u twee getallen probeert samen te voegen.

Als u echt twee getallen wilt samenvoegen, is de eenvoudigste manier om dit probleem op te lossen, door er eerst minstens één van naar een stringgegevenstype te casten.

Een andere manier om dit te doen is door de CONCAT() functie.

Voorbeeld van fout

Hier is een voorbeeld van code die deze fout veroorzaakt:

SELECT 123 || 456;

Resultaat:

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.

Oplossing 1

Hier is een snelle manier om dit probleem op te lossen:

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

Resultaat:

123456

Hoewel het waar is dat we beide getallen naar een string hadden kunnen casten, is dat niet nodig. Zolang een van de operanden een string is, kan de operator voor pijpaaneenschakeling ze samenvoegen.

Oplossing 2

Een andere manier om dit te doen is door de CONCAT() functie om de aaneenschakeling te doen:

SELECT CONCAT(123, 456);

Resultaat:

123456

Deze functie werkt op getallen zonder dat u ze naar een tekenreeks hoeft te converteren. De functie doet dit automatisch (het voegt standaard de tekstrepresentaties van zijn argumenten samen).


  1. Hoe REPLACE() werkt in MariaDB

  2. Sterrenschema versus sneeuwvlokschema

  3. Onbekende primaire sleutel voor tafel krijgen terwijl de ID er is

  4. SQL Server - stop of verbreek de uitvoering van een SQL-script