sql >> Database teknologi >  >> RDS >> PostgreSQL

Rette:"operator eksisterer ikke:heltal || heltal” i PostgreSQL

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


  1. PLS-00103:Stødte på symbolet CREATE

  2. nogen grænse for antallet af SQL Server-forbindelser?

  3. Filtrering af advarselslogge i EM13c

  4. Parallelle udførelsesplaner – grene og tråde