Funció Oracle NVL

Funcio Oracle Nvl



Un valor nul és un camp que s'ha deixat en blanc o no té cap valor assignat.

Els valors NULL són habituals a les bases de dades, especialment quan s'importen dades externes. Per tant, tret que una columna contingui una restricció per evitar valors NULL, el motor de base de dades probablement utilitzarà un valor NULL per a un valor que falta.







Tot i que els valors NULL són habituals, poden provocar problemes amb la base de dades, ja que la base de dades no té cap valor per treballar. Per tant, és una bona pràctica aplicar accions per gestionar valors NULL a les consultes.



En aquesta publicació, aprendrem a convertir els valors NULL en una taula determinada perquè contingui un valor predeterminat que tingui menys probabilitats de provocar errors d'operació a la vostra base de dades.



Funció Oracle NVL

Com s'ha esmentat, aquesta funció ens permet substituir valors NULL per valors més significatius. La sintaxi de la funció es proporciona a continuació:





NVL ( expr1, expr2 ) ;

La funció accepta dos arguments principals:

expr1 i expr2 – aquest paràmetre defineix el valor a provar per als valors NULL. Si el valor de expr1 és NULL, la funció retornarà el valor de expr2.



Les dues expressions poden tenir tipus de dades semblants o diferents. Si els tipus de dades corresponents difereixen, el motor de base de dades pot realitzar una conversió implícita per permetre la compatibilitat amb els tipus de dades. Si és impossible convertir els tipus de dades corresponents, el motor de base de dades generarà un error.

Exemple d'ús de la funció Oracle NVL().

L'exemple següent mostra l'ús bàsic de la funció NVL():

Exemple 1

Considereu l'exemple següent:

seleccionar nvl ( 'Hola' , 'món' ) de dual;

A l'exemple anterior, utilitzem la funció NVL() per comprovar si la cadena 'hola' és un valor NULL. Com que el valor proporcionat no és nul, la funció retornarà la cadena 'hola'.

Exemple 2

Considereu el segon exemple que es mostra a continuació:

seleccionar nvl ( nul, 'món' ) de dual;

En aquest cas, com que la primera expressió és un valor NULL, la consulta retornarà la segona cadena tal com es mostra a continuació:

Exemple 3

També podem utilitzar la funció NVL() per substituir valors NULl en una taula de base de dades. Considereu la taula d'empleats que es mostra a continuació:

seleccionar FIRST_NAME, LAST_NAME, EMAIL, SALARY, COMMISSION_PCT de EMPLOYEES emp;

Taula resultant:

Com podem veure, la columna commission_pct conté valors NULl. Podem crear una consulta per substituir els valors NULL de la columna commission_pct per 0, tal com es mostra a l'exemple següent:

seleccionar FIRST_NAME, LAST_NAME, EMAIL, SALARY, nvl ( COMMISSION_PCT, 0 )
de EMPLEADOS emp;

A la consulta d'exemple anterior, utilitzem la funció NVL() per provar el valor de la columna commission_pct per a NULL. Si hi ha un valor NULL, retornem 0. En cas contrari, retornem el valor original.

Això ens hauria de permetre substituir els valors NULL de la columna per 0, tal com es mostra a la taula resultant següent:

Ho podem utilitzar amb una instrucció UPDATE o emmagatzemar el valor resultant en una vista de taula.

Conclusió

En aquest tutorial, heu après a utilitzar la funció Oracle NVL() per substituir els valors NULL per valors predeterminats. És bo tenir en compte que, tot i que la funció NVL() s'assembla molt a la funció COALESCE(), la funció NVL() només pot retornar un sol valor. Al mateix temps, la funció coalesce() pot retornar diversos valors.

Si busqueu una funció que pugui prendre més de dos arguments sense utilitzar la funció coalesce(), considereu la funció NVL2().