Oracle NVL funktion

Oracle Nvl Funktion



En null-værdi er et felt, der er blevet tomt eller ikke har nogen tildelt værdi.

NULL-værdier er almindelige i databaser, især ved import af eksterne data. Medmindre en kolonne indeholder en begrænsning for at forhindre NULL-værdier, vil databasemotoren derfor sandsynligvis bruge en NULL-værdi for en manglende værdi.







Selvom NULL-værdier er almindelige, kan de føre til databaseproblemer, da databasen ikke har nogen værdi at arbejde med. Det er derfor en god praksis at anvende handlinger til at håndtere NULL-værdier i dine forespørgsler.



I dette indlæg vil vi lære, hvordan man konverterer NULL-værdier i en given tabel til at indeholde en standardværdi, der er mindre tilbøjelige til at forårsage operationsfejl i din database.



Oracle NVL funktion

Som nævnt giver denne funktion os mulighed for at erstatte NULL-værdier med mere meningsfulde værdier. Funktionens syntaks er angivet nedenfor:





NVL ( udtr1, udtr2 ) ;

Funktionen accepterer to hovedargumenter:

udtr1 og udtr2 – denne parameter definerer den værdi, der skal testes for NULL-værdier. Hvis værdien af ​​udtr1 er NULL, vil funktionen returnere værdien af ​​udtr2.



Begge udtryk kan have lignende eller forskellige datatyper. Hvis de tilsvarende datatyper er forskellige, kan databasemotoren udføre implicit konvertering for at tillade kompatibilitet med datatyperne. Hvis det er umuligt at konvertere de tilsvarende datatyper, vil databasemotoren give en fejl.

Oracle NVL() Funktionseksempel på brug

Følgende eksempel viser den grundlæggende brug af NVL()-funktionen:

Eksempel 1

Overvej følgende eksempel:

Vælg lvl ( 'Hej' , 'verden' ) fra dobbelt;

I det foregående eksempel bruger vi NVL()-funktionen til at teste, om strengen 'hello' er en NULL-værdi. Da den angivne værdi ikke er null, vil funktionen returnere strengen 'hej'.

Eksempel 2

Overvej det andet eksempel vist nedenfor:

Vælg lvl ( nul, 'verden' ) fra dobbelt;

I dette tilfælde, da det første udtryk er en NULL-værdi, vil forespørgslen returnere den anden streng som vist nedenfor:

Eksempel 3

Vi kan også bruge NVL()-funktionen til at erstatte NULl-værdier i en databasetabel. Overvej medarbejdernes tabel vist nedenfor:

Vælg FIRST_NAME, LAST_NAME, EMAIL, SALARY, COMMISSION_PCT fra EMPLOYEES em;

Resultattabel:

Som vi kan se, indeholder commission_pct-kolonnen NULl-værdier. Vi kan oprette en forespørgsel for at erstatte NULL-værdierne fra kolonnen commission_pct med 0, som vist i eksemplet nedenfor:

Vælg FIRST_NAME, LAST_NAME, EMAIL, LØN, nvl ( COMMISSION_PCT, 0 )
fra MEDARBEJDERE emp;

I det foregående eksempelforespørgsel bruger vi funktionen NVL() til at teste værdien i kolonnen commission_pct for NULL'er. Hvis der er en NULL-værdi, returnerer vi 0. Ellers returnerer vi den oprindelige værdi.

Dette skulle give os mulighed for at erstatte NULL-værdierne i kolonnen med 0, som vist i den resulterende tabel nedenfor:

Vi kan bruge dette med en UPDATE-sætning eller gemme den resulterende værdi i en tabelvisning.

Konklusion

I dette selvstudie lærte du, hvordan du bruger Oracle NVL()-funktionen til at erstatte NULL-værdier med standardværdier. Det er godt at huske på, at selvom NVL()-funktionen minder meget om COALESCE()-funktionen, kan NVL()-funktionen kun returnere en enkelt værdi. Samtidig kan funktionen coalesce() returnere flere værdier.

Hvis du leder efter en funktion, der kan tage mere end to argumenter uden at bruge coalesce()-funktionen, skal du overveje NVL2()-funktionen.