Een null-waarde is een veld dat leeg is gelaten of waaraan geen waarde is toegewezen.
NULL-waarden komen veel voor in databases, vooral bij het importeren van externe gegevens. Daarom zal de database-engine, tenzij een kolom een beperking bevat om NULL-waarden te voorkomen, waarschijnlijk een NULL-waarde gebruiken voor een ontbrekende waarde.
Hoewel NULL-waarden veel voorkomen, kunnen ze leiden tot databaseproblemen omdat de database geen waarde heeft om mee te werken. Het is daarom een goede gewoonte om acties toe te passen om NULL-waarden in uw query's te verwerken.
In dit bericht zullen we leren hoe NULL-waarden in een bepaalde tabel kunnen worden geconverteerd om een standaardwaarde te bevatten die minder snel bedieningsfouten in uw database veroorzaakt.
Oracle NVL-functie
Zoals eerder vermeld, stelt deze functie ons in staat om NULL-waarden te vervangen door meer betekenisvolle waarden. De syntaxis van de functie wordt hieronder weergegeven:
NVL ( Uitdr1, Uitdr2 ) ;
De functie accepteert twee hoofdargumenten:
expr1 en expr2 – deze parameter definieert de waarde die moet worden getest op NULL-waarden. Als de waarde van expr1 NULL is, retourneert de functie de waarde van expr2.
Beide uitdrukkingen kunnen vergelijkbare of verschillende gegevenstypen hebben. Als de overeenkomstige gegevenstypen verschillen, kan de database-engine impliciete conversie uitvoeren om compatibiliteit met de gegevenstypen mogelijk te maken. Als het onmogelijk is om de overeenkomstige gegevenstypen te converteren, geeft de database-engine een foutmelding.
Oracle NVL() Functie Voorbeeld Gebruik
Het volgende voorbeeld demonstreert het basisgebruik van de NVL()-functie:
voorbeeld 1
Beschouw het volgende voorbeeld:
selecteren niveau ( 'Hallo' , 'wereld' ) van dubbel;In het vorige voorbeeld gebruiken we de functie NVL() om te testen of de tekenreeks ‘hallo’ een NULL-waarde is. Aangezien de opgegeven waarde niet null is, retourneert de functie de tekenreeks 'hallo'.
Voorbeeld 2
Beschouw het tweede voorbeeld hieronder:
selecteren niveau ( nul, 'wereld' ) van dubbel;Aangezien de eerste uitdrukking in dit geval een NULL-waarde is, retourneert de query de tweede tekenreeks zoals hieronder weergegeven:
Voorbeeld 3
We kunnen ook de functie NVL() gebruiken om NUL-waarden in een databasetabel te vervangen. Bekijk de onderstaande werknemerstabel:
selecteren FIRST_NAME, LAST_NAME, EMAIL, SALARY, COMMISSION_PCT van EMPLOYEES medewerker;resulterende tabel:
Zoals we kunnen zien, bevat de kolom commission_pct NUL-waarden. We kunnen een query maken om de NULL-waarden uit de kolom commission_pct te vervangen door 0, zoals in het onderstaande voorbeeld:
selecteren FIRST_NAME, LAST_NAME, EMAIL, SALARY, nvl ( COMMISSIE_PCT, 0 )van MEDEWERKERS werkn;
In de vorige voorbeeldquery gebruiken we de functie NVL() om de waarde in de kolom commission_pct te testen op NULL's. Als er een NULL-waarde is, retourneren we 0. Anders retourneren we de oorspronkelijke waarde.
Dit zou ons in staat moeten stellen om de NULL-waarden in de kolom te vervangen door 0, zoals weergegeven in de resulterende tabel hieronder:
We kunnen dit gebruiken met een UPDATE-instructie of de resulterende waarde opslaan in een tabelweergave.
Gevolgtrekking
In deze zelfstudie hebt u geleerd hoe u de Oracle NVL()-functie kunt gebruiken om NULL-waarden te vervangen door standaardwaarden. Houd er rekening mee dat hoewel de NVL()-functie sterk lijkt op de COALESCE()-functie, de NVL()-functie slechts één waarde kan retourneren. Tegelijkertijd kan de functie coalesce() meerdere waarden retourneren.
Als u op zoek bent naar een functie die meer dan twee argumenten aankan zonder de functie coalesce() te gebruiken, overweeg dan de NVL2()-functie.