PostgreSQL:ssä COALESCE-funktio palauttaa ensimmäisen ei-tyhjän argumentin. Sitä käytetään yleensä SELECT-lauseen kanssa nolla-arvojen tehokkaaseen käsittelyyn.
Syntax: COALESCE (argument_1, argument_2, …);
Funktio COALESCE hyväksyy rajattoman määrän argumentteja. Se palauttaa ensimmäisen argumentin, joka ei ole nolla. Jos kaikki argumentit ovat nollia, COALESCE-funktio palauttaa nollan. he COALESCE-funktio arvioi argumentit vasemmalta oikealle, kunnes se löytää ensimmäisen ei-nollan argumentin. Kaikkia muita argumentteja ensimmäisestä ei-tyhjästä argumentista lähtien ei arvioida.
Esimerkki:
Luotaan ensin havainnollistamista varten taulukko (vaikkapa items
) alla olevalla lausekkeella:
CREATE TABLE items ( ID serial PRIMARY KEY, product VARCHAR (100) NOT NULL, price NUMERIC NOT NULL, discount NUMERIC);
Taulukossa items
on neljä kenttää:
- id: primääriavain, joka yksilöi kohteen kohteet-taulukossa.
- product: tuotteen nimi.
- price: tuotteen hinta.
- alennus: tuotteen alennus.
Siirrämme nyt joitakin tietueita items
taulukkoon INSERT-lauseen avulla seuraavasti:
INSERT INTO items (product, price, discount)VALUES ('A', 1000, 10), ('B', 1500, 20), ('C', 800, 5), ('D', 500, NULL);
Viimeiseksi kysymme tuotteiden nettohintoja seuraavalla tavalla:
SELECT product, (price - discount) AS net_priceFROM items;
Tämä johtaa seuraavaan tulokseen:
Jos katsot neljättä riviä, huomaat, että tuotteen D nettohinta on nolla, mikä ei näytä olevan oikein. Kyse on siitä, että tuotteen D alennus on nolla, joten kun otamme nolla-arvon nettohinnan laskemiseksi, PostgreSQL palauttaa nollan. Oikean hinnan saamiseksi meidän on oletettava, että jos alennus on nolla, se on nolla. Silloin voimme käyttää COALESCE-funktiota seuraavasti:
SELECT product, (price - COALESCE(discount, 0)) AS net_priceFROM items;
Tulos: