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:

Cikk címkék :

admin

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.

lg