I PostgreSQL returnerer funktionen COALESCE det første ikke-nul-argument. Den bruges generelt sammen med SELECT-erklæringen for at håndtere null-værdier effektivt.
Syntax: COALESCE (argument_1, argument_2, …);
Den COALESCE-funktion accepterer et ubegrænset antal argumenter. Den returnerer det første argument, der ikke er nul. Hvis alle argumenter er nul, returnerer COALESCE-funktionen nul. e COALESCE-funktionen evaluerer argumenterne fra venstre mod højre, indtil den finder det første ikke-nul-argument. Alle de resterende argumenter fra det første ikke-nul-argument evalueres ikke.
Eksempel:
Til demonstrationsformål opretter vi først en tabel (lad os sige items
) ved hjælp af nedenstående anvisning:
CREATE TABLE items ( ID serial PRIMARY KEY, product VARCHAR (100) NOT NULL, price NUMERIC NOT NULL, discount NUMERIC);
Der er fire felter i items
tabellen:
- id: den primære nøgle, der identificerer elementet i tabellen items.
- produkt: produktnavnet.
- pris: prisen på produktet.
- rabat: produktets rabat.
Nu indsætter vi nogle poster i items
tabellen ved hjælp af INSERT-anvisningen som følger:
INSERT INTO items (product, price, discount)VALUES ('A', 1000, 10), ('B', 1500, 20), ('C', 800, 5), ('D', 500, NULL);
Endeligt forespørger vi om produkternes nettopriser ved hjælp af følgende:
SELECT product, (price - discount) AS net_priceFROM items;
Dette vil føre til følgende:
Hvis du kigger på den fjerde række, vil du bemærke, at nettoprisen for produktet D er nul, hvilket ikke virker korrekt. Problemet er, at rabatten på produkt D er nul, og derfor returnerer PostgreSQL nul, når vi tager nul-værdien for at beregne nettoprisen. For at få den rigtige pris er vi nødt til at antage, at hvis rabatten er nul, er den nul. Så kan vi bruge funktionen COALESCE på følgende måde:
SELECT product, (price - COALESCE(discount, 0)) AS net_priceFROM items;
Output: