Összefoglaló: Ez a cikk áttekinti a NULL értékek PostgreSQL-ben történő kezelésének módszereit a COALESCE függvény használatával. A példákkal tárgyalt témák a következők:
1. Mi az a COALESCE funkció?
a. néhány figyelmeztetés
2. A NULL értékek megakadályozása a COALESCE
segítségével ebben a bejegyzésben meg fogjuk érteni, hogy mi a COALESCE függvény, és hogyan kell használni a PostgreSQL-ben.
mi az a COALESCE függvény?
a COALESCE egy beépített rendszerfüggvény, amely a PostgreSQL-ben elérhető feltételes kifejezések egyikének tekinthető. A NULLIF, a legnagyobb, a legkevésbé és a COALESCE a feltételes kifejezések típusai a PostgreSQL – ben.
a COALESCE függvény a megadott lista első nem NULL kifejezését adja vissza. Ha az összes argumentum NULL, akkor a kimenetként NULL értéket ad vissza.
a támogatott szintaxis:
COALESCE(value_1,value_2,value_3,........value_n)
a paraméterek vagy argumentumok:
value_1,value_2,value_3,........value_n
figyelmeztetések
néhány pont a COALESCE függvényről:
- a paramétereket nem NULL értékekre tesztelik.
- a paramétereknek azonos adattípusúnak kell lenniük. Ellenkező esetben hibát fog eredményezni.
- a COALESCE függvény korlátlan számú argumentumot fogad el.
- az argumentumokat balról jobbra veszi. a
- Coalesce funkció hasonló kompatibilitást biztosít, mint az NVL és az IFNULL, amelyek más DBMS-ben is elérhetők.
- A CASE és a COALESCE hasonló célokra használható, de a COALESCE használatának előnye, hogy sokkal kevesebb gépelést igényel.
- leállítja a paraméterek értékelését, amint eléri az első nem NULL értéket.
példák
1. Így működik a COALESCE az első paraméter nem NULL értékével:
postgres=# select coalesce (1,null,2); coalesce ---------- 1(1 row)
a COALESCE függvény az elején megtalálja az első nem NULL kifejezést, így mindig ugyanazt az eredményt hozza, függetlenül attól, hogy a fennmaradó paraméterek mit tartalmaznak.
2. Így működik a COALESCE, ha EGY NULL érték az első paraméter:
postgres=# select coalesce (null,1,2); coalesce ---------- 1(1 row)
a COALESCE függvény NULL értéket talált az első paraméterben, így folytatta a második paramétert, amely nem volt NULL, így a paraméter értéke vissza lett adva.
3. Így értelmezi a többszörös NULL értékeket:
postgres=# SELECT coalesce(null,null, 1, 2, 3, null, 4); coalesce ---------- 1(1 row)
ebben a kifejezésben több nulla van, de mivel az első nem NULL értéket a harmadik paraméteren érték el, az összes fennmaradó értéket figyelmen kívül hagyták.
4. Ha a paraméterek adattípusai nem egyeznek, ez hibát eredményez:
postgres=# SELECT coalesce(1,now(),null);ERROR: COALESCE types integer and timestamp with time zone cannot be matched
az első paraméter egy egész szám, a now() függvény pedig egy időzónás időbélyeget ad vissza. Mivel ezek a paraméterek nem azonos típusúak, a függvény aláírása érvénytelen, ezért hibát eredményez.
5. A COALESCE függvényen belül más függvényeket is használhat paraméterként:
postgres=# SELECT coalesce(nvl(null,199),least(8,null),avg(9.9)); coalesce ---------- 199(1 row)
A NULL értékek megakadályozása a COALESCE
a COALESCE függvény hasznos alkalmazása megakadályozza, hogy a NULL értékek megjelenjenek a lekérdezés eredményeiben.
példa
1. Hozzon létre egy táblázatot “értékesítés”a Táblázat létrehozása paranccsal:
postgres=# CREATE TABLE sales (serial_id int primary key, product_name varchar(50), amount numeric, discount numeric); CREATE TABLE
2. Helyezze be az adatokat az “értékesítés”táblázatba:
postgres=# INSERT INTO sales VALUES (121,'paste',1000,10), (144,'brush',1500,20), (166,'soap',800,0), (178,'coffee',500,NULL);INSERT 0 4
3. Ha megpróbálunk végrehajtani kivonni egy értéket a” kedvezmény “oszlopban az” összeg ” oszlop értékéből, az utolsó sor NULL értéket ad vissza. Ez azért van, mert minden null értéken végzett számtan NULL értéket eredményez.
postgres=# SELECT amount - discount as "final bill" FROM sales; final bill ------------ 990 1480 800 <=Null(4 rows)