Bevezetés

Az adatok PostgreSQL-ben történő kezelése során a NULL értékek kezelése kissé trükkös lehet. Például a legtöbb kifejezés NULL értéket ad vissza, ha a kifejezés bármely eleme NULL. Hogyan kerülhetjük el a NULL értékekkel kapcsolatos nehézségek egy részét? A kétrészes sorozat első cikkében bemutattuk, hogy a PostgreSQL COALESCE függvénye hogyan használható a NULL értékek vizsgálatára és a NULL-ok helyére egy másik érték behelyettesítésére. Ez a cikk ott folytatódik, ahol abbahagytuk, és a COALESCE függvényről és annak PostgreSQL-ben való alkalmazásáról folytatjuk a beszélgetést.

Előfeltételek

Mielőtt megpróbálná követni a cikk példáit, győződjön meg róla, hogy a PostgreSQL már telepítve van a gépén. Emellett rendelkeznie kell némi bevezető ismerettel a PostgreSQL-ről ahhoz, hogy megértse a COALESCE függvény példáit.

COALESCE a psql parancssori felületén

Az előző cikkben elmagyaráztuk, hogyan lehet elérni a PostgreSQL psql parancssori felületét. Ismét be kell lépnünk a psql parancssori konzolba, hogy kipróbálhassunk néhány COALESCE példát.

Kezdjük az alábbi egyszerű példával:

1
SELECT COALESCE ( ‘alma’ , ‘körte’ , ‘eper’);

A lekérdezés kimenete a következő lesz:

1
2
3
COALESCE
———-
apple

Amint látható, a visszaadott kimenet ‘alma’, mivel ez az első nem NULL érték az argumentumlistában.

Ha a lista első elemeként NULL értéket kapunk, akkor a COALESCEfüggvény kihagyja azt, és az első nem NULL értéket keresi. Ennek működését a következő lekérdezésben láthatjuk:

1
SELECT COALESCE ( NULL, ‘alma’ , ‘körte’ , ‘eper’);

A kimenet a következő lesz:

1
2
3
4
COALESCE
———-.
apple
(1 ROW)

Use PostgreSQL COALESCE timestamp null

A következő példánkban, a COALESCE függvényt próbáljuk meg használni az időbélyeg adattípussal.

Először is létre kell hoznunk egy másik táblát a PostgreSQL-ben:

1
2
3
4
5
6
7
CREATE TABLE books(
book_id INT PRIMARY KEY NOT NULL,
book_name VARCHAR NOT NULL,
quantity INT,
price REAL,
year_released TIMESTAMP
);

Az imént létrehozott books táblába is be kell illesztenünk rekordokat:

1
2
3
4
5
6
7
INSERT INTO books(book_name, quantity, price, year_released)
VALUES
(‘Book1’, 12, 60, ‘2015-07-21 09:10:25+8’),
(‘Book2’, 5, 55, ‘2018-02-12 15:40:15+8’),
(‘Book3’, 10, 90, ‘2017-11-12 00:10:11+8’),
(‘Book4’, 26, 47, NULL),
(‘Book5’, 2, 83, ‘2019-03-05 03:05:08+8’);

Figyeljük meg, hogy a year_released oszlopba, amelynek adattípusa timestamp, NULL értéket illesztettünk be a táblázatunkba.

Tegyük fel, hogy szeretnénk megkapni az egyes könyvek teljes árát. Ahhoz, hogy ezt az információt megkapjuk, megszorozzuk két oszlop értékét: quantity és price. Az alábbi lekérdezés mutatja, hogy ez hogyan történik:

1
2
SELECT book_id, book_name, ( quantity * price ) AS total_price
FROM books;

A lekérdezés kimenete így fog kinézni:

1
2
3
4
5
6
7
8
book_id | book_name | total_price
———+———–+————-.
1 | Book1 | 720
2 | Book2 | 275
3 | Book3 | 900
4 | Book4 | 1222
5 | Book5 | 166
(5 ROWS)

Nézzük meg a books tábla tartalmát ezzel a lekérdezéssel:

1
SELECT * FROM books;

A kimenet így nézne ki:

1
2
3
4
5
6
7
8
book_id | book_name | quantity | price | year_released
———+———–+———-+——-+———————
1 | Book1 | 12 | 60 | 2015-07-21 09:10:25
2 | Book2 | 5 | 55 | 2018-02-12 15:40:15
3 | Book3 | 10 | 90 | 2017-11-12 00:10:11
4 | Book4 | 26 | 47 |
5 | Book5 | 2 | 83 | 2019-03-05 03:05:08
(5 sor)
  • Figyeljünk arra, hogy a negyedik sor utolsó oszlopában NULL érték van. Ezt a COALESCE függvény segítségével megváltoztathatjuk, hogy helyette egy nem NULL értéket használjunk:
1
2
SELECT book_id, book_name,
COALESCE(year_released, CURRENT_TIMESTAMP) FROM books;

Íme a kimenet:

1
2
3
4
5
6
7
8
book_id | book_name | COALESCE
———+———–+——————————-
1 | Book1 | 2015-07-21 09:10:25-04
2 | Book2 | 2018-02-12 15:40:15-05
3 | Book3 | 2017-11-12 00:10:11-05
4 | Book4 | 2020-02-13 06:20:41.239926-05
5 | Book5 | 2019-03-05 03:05:08-05
(5 ROWS)

Következtetés

Ebben a kétrészes cikksorozatban alaposan megnéztük a PostgreSQL COALESCE függvényét. Számos példát mutattunk arra, hogyan használható ez a függvény az adatokban található NULL értékek vizsgálatára, és szükség esetén nem NULL értékkel való helyettesítésére. A példák segítségével felkészülhet arra, hogy a COALESCE függvényt beépítse a saját PostgreSQL utasításaiba.

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

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