Funcții NULL
Obiective În această lecție veți învăța: Să explicaţi utilizarea funcțiilor COALESCE și NVL Să explicaţi utilizarea funcţiilor de uz general care specifică modul în care sunt tratate valorile NULL Să construiți și executați interogări SQL care aplică corect funcțiile singulare NVL, NVL2, NULLIF și COALESCE Să folosiți funcții și expresii condiționale
Dobândirea cunoștințelor Oracle oferă câteva funcții de uz general, care specifică modul în care sunt tratate valorile NULL. Funcția NVL lucrează cu orice tip de date și este obligatoriu ca cele două valori să aibă același tip. Exemplu: SELECT nume, NVL(permis,'Nu are permis') permis FROM agenti_inchirieri
Dobândirea cunoștințelor Exemplu: SELECT id_locuinta, nr_balcoane, NVL2(TO_CHAR(nr_balcoane),'Are balcon','Nu are balcon') balcon FROM locuinte WHERE tip='semidec' AND id_locuinta <=6
Dobândirea cunoștințelor Exemplu: SELECT nume, LENGTH(nume)lungime_nume, NULLIF(LENGTH(nume),4) rezultat FROM clienti WHERE LENGTH(nume) BETWEEN 3 AND 5
Dobândirea cunoștințelor COALESCE(expr1, expr2, …, exprn) – returnează valoarea primei expresii nenule. Exemplu: SELECT id_locuinta,nr_balcoane,nr_bai, COALESCE(nr_balcoane,nr_bai,0) b FROM locuinte
Dobândirea cunoștințelor Funcții și expresii condiționale Oracle SQL oferă posibilitatea de a construi expresii alternative asemănătoare structurilor IF-THEN-ELSE prezente în alte limbaje. DECODE(expresie, val11,val12, val21,val22…,valn1,valn2,val) compară valoarea expresiei cu valorile val11, val21, …valn1 și dacă sunt egale va returna val12, val22, …valn2, altfel va returna valoare val. Exemplu: SELECT DECODE('Maria', 'Dana', 'Ea este Dana', 'Maria', 'Ea este Maria', 'Nu este nici Dana nici Maria')exemplu FROM dual
Dobândirea cunoștințelor În locul funcției DECODE se poate folosi expresia condițională CASE, care utilizează cuvintele cheie WHEN, THEN, ELSE, END pentru a indica ramura selectată. Exemplu: SELECT CASE 'Valeria' WHEN 'Dana' THEN 'Ea este Dana' WHEN 'Maria' THEN 'Ea este Maria' ELSE 'Nu este nici Dana nici Maria' END EXEMPLU FROM dual