Oracle NVL-funktion

Oracle Nvl Funktion



Ett nollvärde är ett fält som har lämnats tomt eller som inte har något tilldelat värde.

NULL-värden är vanliga i databaser, särskilt vid import av extern data. Såvida inte en kolumn innehåller en begränsning för att förhindra NULL-värden, kommer databasmotorn troligen att använda ett NULL-värde för ett saknat värde.







Även om NULL-värden är vanliga kan de leda till databasproblem eftersom databasen inte har något värde att arbeta med. Det är därför en god praxis att använda åtgärder för att hantera NULL-värden i dina frågor.



I det här inlägget kommer vi att lära oss hur man konverterar NULL-värden i en given tabell för att innehålla ett standardvärde som är mindre sannolikt att orsaka operationsfel i din databas.



Oracle NVL-funktion

Som nämnts tillåter denna funktion oss att ersätta NULL-värden med mer meningsfulla värden. Funktionens syntax finns nedan:





NVL ( expr1, expr2 ) ;

Funktionen accepterar två huvudargument:

expr1 och expr2 – denna parameter definierar värdet som ska testas för NULL-värden. Om värdet på expr1 är NULL kommer funktionen att returnera värdet på expr2.



Båda uttrycken kan ha liknande eller olika datatyper. Om motsvarande datatyper skiljer sig kan databasmotorn utföra implicit konvertering för att möjliggöra kompatibilitet med datatyperna. Om det är omöjligt att konvertera motsvarande datatyper kommer databasmotorn att ge ett fel.

Oracle NVL() Funktionsexempel användning

Följande exempel visar den grundläggande användningen av NVL()-funktionen:

Exempel 1

Tänk på följande exempel:

Välj lvl ( 'Hallå' , 'värld' ) från dubbel;

I föregående exempel använder vi NVL()-funktionen för att testa om strängen 'hej' är ett NULL-värde. Eftersom det angivna värdet inte är null kommer funktionen att returnera strängen 'hej'.

Exempel 2

Tänk på det andra exemplet nedan:

Välj lvl ( null, 'värld' ) från dubbel;

I det här fallet, eftersom det första uttrycket är ett NULL-värde, returnerar frågan den andra strängen enligt nedan:

Exempel 3

Vi kan också använda NVL()-funktionen för att ersätta NULl-värden i en databastabell. Tänk på de anställdas tabell som visas nedan:

Välj FIRST_NAME, LAST_NAME, EMAIL, LÖN, COMMISSION_PCT från EMPLOYEES emp;

Resultattabell:

Som vi kan se innehåller kolumnen commission_pct NULl-värden. Vi kan skapa en fråga för att ersätta NULL-värdena från kolumnen commission_pct med 0, som visas i exemplet nedan:

Välj FIRST_NAME, LAST_NAME, EMAIL, LÖN, nvl ( COMMISSION_PCT, 0 )
från ANSTÄLLDA emp;

I föregående exempelfråga använder vi NVL()-funktionen för att testa värdet i kolumnen commission_pct för NULL. Om det finns ett NULL-värde returnerar vi 0. Annars returnerar vi det ursprungliga värdet.

Detta bör tillåta oss att ersätta NULL-värdena i kolumnen med 0, som visas i den resulterande tabellen nedan:

Vi kan använda detta med en UPDATE-sats eller lagra det resulterande värdet i en tabellvy.

Slutsats

I den här handledningen lärde du dig hur du använder Oracle NVL()-funktionen för att ersätta NULL-värden med standardvärden. Det är bra att komma ihåg att även om NVL()-funktionen liknar COALESCE()-funktionen, kan NVL()-funktionen bara returnera ett enda värde. Samtidigt kan funktionen coalesce() returnera flera värden.

Om du letar efter en funktion som kan ta mer än två argument utan att använda coalesce()-funktionen, överväg NVL2()-funktionen.