De meeste grote DBMS'en bieden ons een functie voor het vervangen van null-waarden door een andere waarde.
Maar de naam van de functie verschilt meestal tussen DBMS'en. SQL Server heeft bijvoorbeeld een ISNULL()
functie, terwijl andere (zoals MySQL, MariaDB en SQLite) een IFNULL()
hebben functie om hetzelfde te doen.
Om de zaken echter te verwarren, hebben MySQL en MariaDB elk een ISNULL()
functie die anders werkt dan de gelijknamige functie van SQL Server (de implementatie van MySQL en MariaDB accepteert slechts één argument en retourneert 1
als het null
is en 0
als dat niet het geval is).
Hoe dan ook, in het geval van Oracle Database kunnen we de NVL()
. gebruiken functie om null-waarden te vervangen door een andere waarde.
Eigenlijk heeft Oracle Database ook een NVL2()
functie waarmee we een andere waarde kunnen opgeven die kan worden gebruikt in het geval dat het eerste argument niet null
is .
Als we gewoon willen testen of een waarde null
. is of niet, we kunnen de IS NULL
. gebruiken voorwaarde (of de IS NOT NULL
voor de tegenovergestelde test).
De NVL()
Functie
Hier is een voorbeeld dat laat zien hoe de NVL()
functie werkt:
SELECT NVL(null, 'Run')
FROM DUAL;
Resultaat:
Run
In dat geval was het eerste argument null
en dus werd het tweede argument geretourneerd.
Dit is wat er gebeurt als het eerste argument niet null
is :
SELECT NVL('Walk', 'Run')
FROM DUAL;
Resultaat:
Walk
Het eerste argument wordt geretourneerd.
De NVL2()
Functie
Zoals vermeld, biedt Oracle Database ons ook de NVL2()
functie. Met deze functie kunnen we een andere waarde opgeven die kan worden gebruikt in het geval dat het eerste argument niet null
is .
Hier is een voorbeeld van hoe het werkt:
SELECT NVL2(null, 2, 3)
FROM DUAL;
Resultaat:
3
Het eerste argument was null
en dus werd het derde argument geretourneerd.
Dit is wat er gebeurt als het eerste argument niet null
is :
SELECT NVL2(1, 2, 3)
FROM DUAL;
Resultaat:
2
Het tweede argument wordt geretourneerd.
De IS NULL
en IS NOT NULL
Voorwaarden
Als we gewoon willen weten of een waarde al dan niet null
. is , kunnen we de IS NULL
. gebruiken vergelijkende voorwaarde. We kunnen ook IS NOT NULL
. gebruiken om te controleren of het niet null
. is .
Stel dat we de volgende tabel hebben:
SELECT * FROM Autoparts
WHERE Price IS NULL;
Resultaat:
ID | OE# | PRIJS | MODEL |
---|---|---|---|
2 | 62150B3278 | – | CAMRY |
1 | 62150A3278 | 168 | HILUX |
In dit geval is de PRICE
kolom bevat een null-waarde voor de eerste rij, maar niet voor de tweede rij.
Hier is een voorbeeld van het gebruik van IS NULL
tegen die tafel:
SELECT * FROM Autoparts
WHERE Price IS NULL;
Resultaat:
ID | OE# | PRIJS | MODEL |
---|---|---|---|
2 | 62150B3278 | – | CAMRY |
Alleen de rij met de nulprijs wordt geretourneerd.
Dit is wat er gebeurt als we IS NOT NULL
gebruiken :
SELECT * FROM Autoparts
WHERE Price IS NOT NULL;
Resultaat:
ID | OE# | PRIJS | MODEL |
---|---|---|---|
1 | 62150A3278 | 168 | HILUX |
De andere rij wordt geretourneerd.