A PostgreSQL-ben a COALESCE függvény az első nem null argumentumot adja vissza. Általában a SELECT utasítással együtt használják a null értékek hatékony kezelésére.
Syntax: COALESCE (argument_1, argument_2, …);
A COALESCE függvény korlátlan számú argumentumot fogad el. Az első olyan argumentumot adja vissza, amely nem null. Ha az összes argumentum null, a COALESCE függvény nullát ad vissza. he COALESCE függvény az argumentumokat balról jobbra haladva értékeli ki, amíg meg nem találja az első nem null argumentumot. Az első nem-null argumentumtól kezdve az összes többi argumentumot nem értékeli ki.
Példa:
A demonstráció céljából először hozzunk létre egy táblát (mondjuk items
) az alábbi utasítással:
CREATE TABLE items ( ID serial PRIMARY KEY, product VARCHAR (100) NOT NULL, price NUMERIC NOT NULL, discount NUMERIC);
A items
táblában négy mező van:
- id: az elsődleges kulcs, amely azonosítja az elemet az elemek táblában.
- product: a termék neve.
- price: a termék ára.
- discount: a termék kedvezménye.
Most beszúrunk néhány rekordot a items
táblába INSERT utasítással az alábbiak szerint:
INSERT INTO items (product, price, discount)VALUES ('A', 1000, 10), ('B', 1500, 20), ('C', 800, 5), ('D', 500, NULL);
Végül lekérdezzük a termékek nettó árait a következőkkel:
SELECT product, (price - discount) AS net_priceFROM items;
Ez a következőket eredményezi:
ha megnézzük a negyedik sort, akkor észrevehetjük, hogy a D termék nettó ára nulla, ami nem tűnik helyesnek. A probléma az, hogy a D termék kedvezménye nulla, ezért amikor a nettó ár kiszámításához a null értéket vesszük, a PostgreSQL nullát ad vissza. Ahhoz, hogy a helyes árat kapjuk, azt kell feltételeznünk, hogy ha a kedvezmény nulla, akkor az nulla. Ekkor a COALESCE függvényt használhatjuk a következőképpen:
SELECT product, (price - COALESCE(discount, 0)) AS net_priceFROM items;
Kimenet: