Oracle NVL -funksjon

Oracle NVL -funksjon

En nullverdi er et felt som har blitt blank eller ikke har noen tildelt verdi.

Nullverdier er vanlige i databaser, spesielt når du importerer eksterne data. Derfor, med mindre en kolonne inneholder en begrensning for å forhindre nullverdier, vil databasemotoren sannsynligvis bruke en nullverdi for en manglende verdi.

Selv om nullverdier er vanlige, kan de føre til databaseproblemer da databasen ikke har noen verdi å jobbe med. Det er derfor en god praksis å anvende handlinger for å håndtere nullverdier i spørsmålene dine.

I dette innlegget lærer vi hvordan du konverterer nullverdier i en gitt tabell for å inneholde en standardverdi som er mindre sannsynlig å forårsake driftsfeil i databasen din.

Oracle NVL -funksjon

Som nevnt lar denne funksjonen oss erstatte nullverdier med mer meningsfulle verdier. Funksjonssyntaksen er gitt nedenfor:

Nvl (expr1, expr2);

Funksjonen godtar to hovedargumenter:

Expr1 og Expr2 - Denne parameteren definerer verdien som skal testes for nullverdier. Hvis verdien av expr1 er null, vil funksjonen returnere verdien av expr2.

Begge uttrykkene kan ha lignende eller forskjellige datatyper. Hvis de tilsvarende datatypene er forskjellige, kan databasemotoren utføre implisitt konvertering for å tillate kompatibilitet med datatypene. Hvis det er umulig å konvertere de tilsvarende datatypene, vil databasemotoren kaste en feil.

Oracle NVL () Funksjonseksempel Bruk

Følgende eksempel viser den grunnleggende bruken av NVL () -funksjonen:

Eksempel 1

Tenk på følgende eksempel:

Velg NVL ('Hello', 'World') fra Dual;

I forrige eksempel bruker vi NVL () -funksjonen for å teste om strengen 'Hello' er en nullverdi. Siden den medfølgende verdien ikke er null, vil funksjonen returnere strengen 'Hello'.

Eksempel 2

Tenk på det andre eksemplet som er vist nedenfor:

Velg NVL (NULL, 'World') fra Dual;

I dette tilfellet, siden det første uttrykket er en nullverdi, vil spørringen returnere den andre strengen som vist nedenfor:

Eksempel 3

Vi kan også bruke NVL () -funksjonen for å erstatte nullverdier i en databasetabell. Tenk på de ansattes bord vist nedenfor:

Velg First_Name, Last_name, E -post, lønn, kommisjon_pct fra ansatte emp;

Resulterende bord:

Som vi kan se, inneholder Commission_PCT -kolonnen nullverdier. Vi kan opprette en spørring for å erstatte nullverdiene fra Commission_PCT -kolonnen med 0, som vist i eksemplet nedenfor:

Velg First_name, Last_name, E -post, lønn, NVL (Commission_PCT, 0)
fra ansatte EMP;

I forrige eksempel på spørringen bruker vi NVL () -funksjonen for å teste verdien i Commission_PCT -kolonnen for NULLS. Hvis det er en nullverdi, returnerer vi 0. Ellers returnerer vi den opprinnelige verdien.

Dette skal tillate oss å erstatte nullverdiene i kolonnen med 0, som vist i den resulterende tabellen nedenfor:

Vi kan bruke dette med en oppdateringserklæring eller lagre den resulterende verdien i en tabellvisning.

Konklusjon

I denne opplæringen lærte du hvordan du bruker Oracle NVL () -funksjonen for å erstatte nullverdier med standardverdier. Det er godt å huske på at selv om NVL () -funksjonen ligner coalesce () -funksjonen, kan NVL () -funksjonen bare returnere en enkelt verdi. Samtidig kan Coalesce () -funksjonen returnere flere verdier.

Hvis du leter etter en funksjon som kan ta mer enn to argumenter uten å bruke Coalesce () -funksjonen, bør du vurdere NVL2 () -funksjonen.