Maybaygiare.org

Blog Network

Cum se utilizează COALESCE în PostgreSQL

Rezumat: Acest articol analizează metodele de manipulare a valorilor nule în PostgreSQL folosind funcția COALESCE. Subiectele discutate cu exemple includ:

1. Ce este o funcție de coalescență?

A. unele avertismente

2. Prevenirea valorilor nule cu COALESCE

În acest post, vom înțelege ce este funcția COALESCE și cum să o folosim în PostgreSQL.

ce este o funcție de coalescență?

COALESCE este o funcție integrată în sistem care poate fi considerată una dintre expresiile condiționale disponibile în PostgreSQL. NULLIF, GREATEST, LEAST și COALESCE sunt tipurile de expresii condiționale din PostgreSQL.

funcția COALESCE returnează prima expresie non-nulă din lista specificată. Dacă toate argumentele sunt NULL, atunci se va întoarce NULL ca ieșire.

sintaxa acceptată este:

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

parametrii sau argumentele sunt:

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

avertismente

câteva puncte despre funcția COALESCE:

  • parametrii sunt testați pentru valori non-NULL.
  • parametrii ar trebui să fie toți același tip de date. În caz contrar, va rezulta o eroare.
  • funcția COALESCE acceptă un număr nelimitat de argumente.
  • este nevoie de argumentele de la stânga la dreapta.
  • funcția Coalesce oferă o compatibilitate similară ca NVL și IFNULL care sunt disponibile în alte DBMS.
  • cazul și COALESCE pot fi utilizate în scopuri similare, dar avantajul utilizării COALESCE este că necesită mult mai puțină tastare.
  • se va opri evaluarea parametrilor de îndată ce se atinge prima valoare non-nulă.

Exemple

1. Iată cum funcționează COALESCE cu o valoare non-nulă pentru primul parametru:

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

funcția COALESCE găsește prima expresie non-nulă la început, deci va produce întotdeauna același rezultat indiferent de ce conțin parametrii rămași.

2. Iată cum funcționează COALESCE când o valoare nulă este primul parametru:

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

funcția COALESCE a găsit o valoare nulă în primul parametru, deci a continuat până la al doilea parametru, care nu era nul, astfel încât valoarea parametrului a fost returnată.

3. Iată cum interpretează mai multe valori nule:

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

există mai multe nuluri în această expresie, dar pentru că prima valoare non-nulă a fost atinsă pe al treilea parametru, toate valorile rămase au fost ignorate.

4. Dacă tipurile de date ale parametrilor nu se potrivesc, aceasta va produce o eroare:

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

primul parametru este un număr întreg, iar funcția now() returnează o marcă de timp cu fusul orar. Deoarece acești parametri nu sunt de același tip, semnătura funcției este nevalidă și astfel produce și eroare.

5. Puteți utiliza alte funcții ca parametri în interiorul funcției COALESCE:

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

prevenirea valorilor nule cu COALESCE

o aplicație utilă a funcției COALESCE este de a preveni apariția valorilor nule în rezultatele interogării.

exemplu

1. Creați un tabel” vânzări”folosind comanda Creare tabel:

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

2. Introduceți datele în tabelul „vânzări”:

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. Dacă încercăm să efectuăm scade o valoare în coloana” reducere „dintr-o valoare din coloana” Sumă”, ultimul rând va returna o valoare nulă. Acest lucru se datorează faptului că orice aritmetică efectuată pe o valoare nulă va duce la NULL.

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

Lasă un răspuns

Adresa ta de email nu va fi publicată.