Maybaygiare.org

Blog Network

Jak používat COALESCE v PostgreSQL

shrnutí: tento článek popisuje metody pro manipulaci s nulovými hodnotami v PostgreSQL pomocí funkce COALESCE. Témata diskutovaná s příklady zahrnují:

1. Co je to splynutí funkce?

a. některé námitky

2. Zabránění nulovým hodnotám pomocí COALESCE

v tomto příspěvku pochopíme, co je funkce COALESCE a jak ji používat v PostgreSQL.

co je to splynutí funkce?

COALESCE je systémová funkce, kterou lze považovat za jeden z podmíněných výrazů dostupných v PostgreSQL. NULLIF, GREATEST, LEAST a COALESCE jsou typy podmíněných výrazů v PostgreSQL.

funkce COALESCE vrací první nenulový výraz v zadaném seznamu. Pokud jsou všechny argumenty NULL, vrátí NULL jako jeho výstup.

podporované syntaxe je:

COALESCE(value_1,value_2,value_3,........value_n)

parametry nebo argumenty jsou:

value_1,value_2,value_3,........value_n

Upozornění

několik bodů, o COALESCE:

  • parametry jsou testovány pro non-NULL hodnot.
  • všechny parametry by měly mít stejný datový typ. V opačném případě to bude mít za následek chybu.
  • funkce COALESCE přijímá neomezený počet argumentů.
  • trvá argumenty zleva doprava.
  • funkce Coalesce poskytují podobnou kompatibilitu jako NVL a IFNULL, které jsou k dispozici v jiných DBMS.
  • CASE a COALESCE lze použít pro podobné účely, ale výhodou použití COALESCE je, že vyžaduje mnohem méně psaní.
  • přestane vyhodnocovat parametry, jakmile je dosaženo první nenulové hodnoty.

příklady

1. Zde je, jak SPLÝVAJÍ pracuje s non-NULL hodnotu pro první parametr:

postgres=# select coalesce (1,null,2); coalesce ---------- 1(1 row)

COALESCE funkce najde první non-NULL výraz na začátku, tak to bude vždy produkovat stejný výsledek bez ohledu na to, co zbývající parametry obsahují.

2. Zde je, jak SPLÝVAJÍ funguje, když hodnota NULL je první parametr:

postgres=# select coalesce (null,1,2); coalesce ---------- 1(1 row)

COALESCE našel NULL hodnota v prvním parametru, tak to pokračovalo druhý parametr, který není NULL, tak, že parametr je hodnota vrácena.

3. Zde je, jak to interpretuje více hodnoty NULL:

postgres=# SELECT coalesce(null,null, 1, 2, 3, null, 4); coalesce ---------- 1(1 row)

Existuje více hodnoty Null v tomto projevu, ale proto, že první non-NULL hodnoty bylo dosaženo na třetí parametr, všechny ostatní hodnoty byly pominuty.

4. Pokud datové typy, parametry se neshodují, to bude produkovat chyby:

postgres=# SELECT coalesce(1,now(),null);ERROR: COALESCE types integer and timestamp with time zone cannot be matched

první parametr je celé číslo, a nyní() funkce vrací timestamp with time zone. Protože tyto parametry nejsou stejného typu, podpis funkce je neplatný, a tak vytváří a chybuje.

5. Můžete používat ostatní funkce jako parametry uvnitř COALESCE:

postgres=# SELECT coalesce(nvl(null,199),least(8,null),avg(9.9)); coalesce ---------- 199(1 row)

Aby hodnoty NULL se SPLYNOUT

užitečné použití COALESCE je, aby se zabránilo hodnoty NULL ze se objevuje v výsledky dotazu.

příklad

1. Vytvořte tabulku „prodej“ pomocí příkazu Vytvořit tabulku:

postgres=# CREATE TABLE sales (serial_id int primary key, product_name varchar(50), amount numeric, discount numeric); CREATE TABLE

2. Vložte data do tabulky „sales“:

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. Pokud se pokusíme odečíst hodnotu ve sloupci „sleva“ od hodnoty ve sloupci „Částka“, poslední řádek vrátí hodnotu NULL. Je to proto, že jakákoli aritmetika provedená na hodnotě NULL bude mít za následek NULL.

postgres=# SELECT amount - discount as "final bill" FROM sales; final bill ------------ 990 1480 800 <=Null(4 rows)

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.