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:

Artikkeli Tunnisteet :

admin

Vastaa

Sähköpostiosoitettasi ei julkaista.

lg