V PostgreSQL vrací funkce COALESCE první nenulový argument. Obvykle se používá s příkazem SELECT pro efektivní zpracování nulových hodnot.

Syntax: COALESCE (argument_1, argument_2, …);

Funkce COALESCE přijímá neomezený počet argumentů. Vrací první argument, který není null. Pokud jsou všechny argumenty nulové, funkce COALESCE vrátí null. he COALESCE function evaluates arguments from left to right until it finds the first non-null argument. Všechny zbývající argumenty od prvního nenulového argumentu se nevyhodnocují.

Příklad:
Pro účely demonstrace nejprve vytvořme tabulku (řekněme items) pomocí níže uvedeného příkazu:

CREATE TABLE items ( ID serial PRIMARY KEY, product VARCHAR (100) NOT NULL, price NUMERIC NOT NULL, discount NUMERIC);

V tabulce items jsou čtyři pole:

  • id: primární klíč, který identifikuje položku v tabulce položek.
  • produkt: název produktu.
  • cena: cena produktu.
  • sleva: sleva produktu.

Nyní vložíme několik záznamů do items tabulky pomocí příkazu INSERT takto:

INSERT INTO items (product, price, discount)VALUES ('A', 1000, 10), ('B', 1500, 20), ('C', 800, 5), ('D', 500, NULL);

Nakonec se zeptáme na čisté ceny výrobků pomocí následujícího:

SELECT product, (price - discount) AS net_priceFROM items;

Tím získáme následující:

Pokud se podíváte na čtvrtý řádek, zjistíte, že čistá cena výrobku D je nulová, což se nezdá být správné. Problém je v tom, že sleva produktu D je nulová, proto když vezmeme nulovou hodnotu pro výpočet čisté ceny, PostgreSQL vrátí nulu. Abychom získali správnou cenu, musíme předpokládat, že pokud je sleva nulová, je nulová. Pak můžeme použít funkci COALESCE následujícím způsobem:

SELECT product, (price - COALESCE(discount, 0)) AS net_priceFROM items;

Výstup:

Štítky k článku :

admin

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.

lg