Maybaygiare.org

Blog Network

Hogyan használjuk a COALESCE-t a PostgreSQL-ben

Ö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)

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

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