În PostgreSQL, funcția COALESCE returnează primul argument non-null. În general, este utilizată cu instrucțiunea SELECT pentru a gestiona eficient valorile nule.
Syntax: COALESCE (argument_1, argument_2, …);
Funcția COALESCE acceptă un număr nelimitat de argumente. Ea returnează primul argument care nu este nul. Dacă toate argumentele sunt nule, funcția COALESCE va returna null. a funcția COALESCE evaluează argumentele de la stânga la dreapta până când găsește primul argument care nu este nul. Toate argumentele rămase de la primul argument non-nul nu sunt evaluate.
Exemplu:
În scopul demonstrației, să creăm mai întâi un tabel (să zicem, items
) folosind instrucțiunea de mai jos:
CREATE TABLE items ( ID serial PRIMARY KEY, product VARCHAR (100) NOT NULL, price NUMERIC NOT NULL, discount NUMERIC);
Există patru câmpuri în items
tabel:
- id: cheia primară care identifică elementul în tabelul items.
- product: numele produsului.
- price: prețul produsului.
- discount: reducerea produsului.
Acum inserăm câteva înregistrări în tabela items
folosind instrucțiunea INSERT după cum urmează:
INSERT INTO items (product, price, discount)VALUES ('A', 1000, 10), ('B', 1500, 20), ('C', 800, 5), ('D', 500, NULL);
În cele din urmă interogăm prețurile nete ale produselor folosind următoarele:
SELECT product, (price - discount) AS net_priceFROM items;
Acest lucru va duce la următoarele:
Dacă vă uitați la al patrulea rând, veți observa că prețul net al produsului D este nul, ceea ce nu pare corect. Problema este că reducerea produsului D este nulă, prin urmare, atunci când luăm valoarea nulă pentru a calcula prețul net, PostgreSQL returnează null. Pentru a obține prețul corect, trebuie să presupunem că, dacă reducerea este nulă, aceasta este zero. Atunci putem folosi funcția COALESCE după cum urmează:
SELECT product, (price - COALESCE(discount, 0)) AS net_priceFROM items;
Scoatere: