Funcția Oracle NVL

Functia Oracle Nvl



O valoare nulă este un câmp care a fost lăsat necompletat sau nu are nicio valoare atribuită.

Valorile NULL sunt comune în bazele de date, mai ales când se importă date externe. Prin urmare, cu excepția cazului în care o coloană conține o constrângere pentru a preveni valorile NULL, motorul bazei de date va folosi probabil o valoare NULL pentru o valoare lipsă.







Deși valorile NULL sunt comune, ele pot duce la probleme cu baza de date, deoarece baza de date nu are nicio valoare cu care să lucreze. Prin urmare, este o practică bună să aplicați acțiuni pentru a gestiona valorile NULL în interogările dvs.



În această postare, vom învăța cum să convertim valorile NULL într-un tabel dat pentru a conține o valoare implicită care este mai puțin probabil să provoace erori de operare în baza de date.



Funcția Oracle NVL

După cum am menționat, această funcție ne permite să înlocuim valorile NULL cu valori mai semnificative. Sintaxa funcției este prezentată mai jos:





NVL ( expr1, expr2 ) ;

Funcția acceptă două argumente principale:

expr1 și expr2 – acest parametru definește valoarea de testat pentru valorile NULL. Dacă valoarea expr1 este NULL, funcția va returna valoarea expr2.



Ambele expresii pot avea tipuri de date similare sau diferite. Dacă tipurile de date corespunzătoare diferă, motorul bazei de date poate efectua o conversie implicită pentru a permite compatibilitatea cu tipurile de date. Dacă este imposibil să convertiți tipurile de date corespunzătoare, motorul bazei de date va genera o eroare.

Oracle NVL() Funcție Exemplu de utilizare

Următorul exemplu demonstrează utilizarea de bază a funcției NVL():

Exemplul 1

Luați în considerare următorul exemplu:

Selectați lvl ( 'Buna ziua' , 'lume' ) din dual;

În exemplul anterior, folosim funcția NVL() pentru a testa dacă șirul „hello” este o valoare NULL. Deoarece valoarea furnizată nu este nulă, funcția va returna șirul „hello”.

Exemplul 2

Luați în considerare al doilea exemplu prezentat mai jos:

Selectați lvl ( nul, 'lume' ) din dual;

În acest caz, deoarece prima expresie este o valoare NULL, interogarea va returna al doilea șir așa cum se arată mai jos:

Exemplul 3

De asemenea, putem folosi funcția NVL() pentru a înlocui valorile NULl într-un tabel al bazei de date. Luați în considerare tabelul angajaților prezentat mai jos:

Selectați FIRST_NAME, LAST_NAME, EMAIL, SALARY, COMMISSION_PCT de la EMPLOYEES emp;

Tabelul rezultat:

După cum putem vedea, coloana commission_pct conține valori NULl. Putem crea o interogare pentru a înlocui valorile NULL din coloana commission_pct cu 0, așa cum se arată în exemplul de mai jos:

Selectați FIRST_NAME, LAST_NAME, EMAIL, SALARY, nvl ( COMMISSION_PCT, 0 )
de la ANGAJATI emp;

În exemplul de interogare anterior, folosim funcția NVL() pentru a testa valoarea din coloana commission_pct pentru valorile NULL. Dacă există o valoare NULL, returnăm 0. În caz contrar, returnăm valoarea inițială.

Acest lucru ar trebui să ne permită să înlocuim valorile NULL din coloană cu 0, așa cum se arată în tabelul rezultat de mai jos:

Putem folosi aceasta cu o instrucțiune UPDATE sau stocăm valoarea rezultată într-o vizualizare de tabel.

Concluzie

În acest tutorial, ați învățat cum să utilizați funcția Oracle NVL() pentru a înlocui valorile NULL cu valori implicite. Este bine să rețineți că, deși funcția NVL() seamănă foarte mult cu funcția COALESCE(), funcția NVL() poate returna doar o singură valoare. În același timp, funcția coalesce() poate returna mai multe valori.

Dacă căutați o funcție care poate lua mai mult de două argumente fără a utiliza funcția coalesce(), luați în considerare funcția NVL2().