Maybaygiare.org

Blog Network

Så här använder du COALESCE i PostgreSQL

sammanfattning: den här artikeln granskar metoder för hantering av NULL-värden i PostgreSQL med COALESCE-funktionen. Ämnen som diskuteras med exempel inkluderar:

1. Vad är en COALESCE funktion?

A. några varningar

2. Förhindra NULL-värden med COALESCE

i det här inlägget kommer vi att förstå vad COALESCE-funktionen är och hur man använder den i PostgreSQL.

Vad är en COALESCE-funktion?

COALESCE är en inbyggd systemfunktion som kan betraktas som ett av de villkorliga uttryck som finns i PostgreSQL. NULLIF, GREATEST, LEAST och COALESCE är typerna av villkorliga uttryck i PostgreSQL.

COALESCE-funktionen returnerar det första icke-NULL-uttrycket i den angivna listan. Om alla argument är NULL kommer det att returnera NULL som dess utgång.

den syntax som stöds är:

COALESCE(value_1,value_2,value_3,........value_n)

parametrarna eller argumenten är:

value_1,value_2,value_3,........value_n

varningar

några punkter om COALESCE-funktionen:

  • parametrarna testas för icke-NULL-värden.
  • parametrarna ska alla vara samma datatyp. Annars kommer det att resultera i ett fel.
  • COALESCE-funktionen accepterar ett obegränsat antal argument.
  • Det tar argumenten från vänster till höger.
  • Coalesce funktion ger liknande kompatibilitet som NVL och IFNULL som finns i andra DBMS.
  • CASE och COALESCE kan användas för liknande ändamål, men fördelen med att använda COALESCE är att det kräver mycket mindre typning.
  • Det kommer att sluta utvärdera parametrar så snart det första icke-NULL-värdet uppnås.

exempel

1. Så här fungerar COALESCE med ett icke-NULL-värde för den första parametern:

postgres=# select coalesce (1,null,2); coalesce ---------- 1(1 row)

COALESCE-funktionen hittar det första icke-NULL-uttrycket i början, så det kommer alltid att ge samma resultat oavsett vad de återstående parametrarna innehåller.

2. Så här fungerar COALESCE när ett NULL-värde är den första parametern:

postgres=# select coalesce (null,1,2); coalesce ---------- 1(1 row)

COALESCE-funktionen hittade ett NULL-värde i den första parametern, så den fortsatte till den andra parametern, som inte var NULL, så att parameterns värde returnerades.

3. Så här tolkar det flera NULL-värden:

postgres=# SELECT coalesce(null,null, 1, 2, 3, null, 4); coalesce ---------- 1(1 row)

det finns flera noll i detta uttryck, men eftersom det första icke-NULL-värdet uppnåddes på den tredje parametern ignorerades alla återstående värden.

4. Om datatyperna för parametrarna inte matchar kommer detta att ge ett fel:

postgres=# SELECT coalesce(1,now(),null);ERROR: COALESCE types integer and timestamp with time zone cannot be matched

den första parametern är ett heltal och funktionen now() returnerar en tidsstämpel med tidszon. Eftersom dessa parametrar inte är av samma typ, är signaturen för funktionen ogiltig, och så producerar och fel.

5. Du kan använda andra funktioner som parametrar inuti COALESCE-funktionen:

postgres=# SELECT coalesce(nvl(null,199),least(8,null),avg(9.9)); coalesce ---------- 199(1 row)

förhindra NULL-värden med COALESCE

en användbar tillämpning av COALESCE-funktionen är att förhindra att NULL-värden visas i frågeresultat.

exempel

1. Skapa en tabell ”försäljning”med kommandot Skapa tabell:

postgres=# CREATE TABLE sales (serial_id int primary key, product_name varchar(50), amount numeric, discount numeric); CREATE TABLE

2. Infoga data i tabellen ”försäljning”:

postgres=# INSERT INTO sales VALUES (121,'paste',1000,10), (144,'brush',1500,20), (166,'soap',800,0), (178,'coffee',500,NULL);INSERT 0 4

3. Om vi försöker utföra subtrahera ett värde i kolumnen” rabatt ”från ett värde i kolumnen” BELOPP ” Returnerar den sista raden ett NULL-värde. Detta beror på att varje aritmetik som utförs på ett NULL-värde kommer att resultera i NULL.

postgres=# SELECT amount - discount as "final bill" FROM sales; final bill ------------ 990 1480 800 <=Null(4 rows)

Lämna ett svar

Din e-postadress kommer inte publiceras.