Die meisten großen DBMS bieten uns eine Funktion zum Ersetzen von Nullwerten durch andere Werte.
Der Name der Funktion unterscheidet sich jedoch in der Regel zwischen den DBMS. Beispielsweise hat SQL Server ein ISNULL() Funktion, während andere (wie MySQL, MariaDB und SQLite) ein IFNULL() haben Funktion, um dasselbe zu tun.
Um die Sache jedoch zu verwirren, haben MySQL und MariaDB jeweils ein ISNULL() Funktion, die anders funktioniert als die gleichnamige Funktion von SQL Server (die Implementierung von MySQL und MariaDB akzeptiert nur ein einziges Argument und gibt 1 zurück wenn es null ist und 0 wenn nicht).
Wie auch immer, im Fall von Oracle Database können wir den NVL() verwenden Funktion zum Ersetzen von Nullwerten durch einen anderen Wert.
Tatsächlich hat Oracle Database auch ein NVL2() Funktion, die es uns ermöglicht, einen anderen Wert bereitzustellen, der verwendet werden kann, falls das erste Argument nicht null ist .
Wenn wir einfach testen wollen, ob ein Wert null ist oder nicht, wir können IS NULL verwenden Bedingung (oder die IS NOT NULL für den entgegengesetzten Test).
Der NVL() Funktion
Hier ist ein Beispiel, das zeigt, wie die NVL() Funktion funktioniert:
SELECT NVL(null, 'Run')
FROM DUAL; Ergebnis:
Run
In diesem Fall war das erste Argument null und so wurde das zweite Argument zurückgegeben.
Folgendes passiert, wenn das erste Argument nicht null ist :
SELECT NVL('Walk', 'Run')
FROM DUAL; Ergebnis:
Walk
Das erste Argument wird zurückgegeben.
Der NVL2() Funktion
Wie bereits erwähnt, stellt uns Oracle Database auch den NVL2() zur Verfügung Funktion. Diese Funktion ermöglicht es uns, einen anderen Wert bereitzustellen, der verwendet werden kann, falls das erste Argument nicht null ist .
Hier ist ein Beispiel dafür, wie es funktioniert:
SELECT NVL2(null, 2, 3)
FROM DUAL; Ergebnis:
3
Das erste Argument war null und so wurde das dritte Argument zurückgegeben.
Folgendes passiert, wenn das erste Argument nicht null ist :
SELECT NVL2(1, 2, 3)
FROM DUAL; Ergebnis:
2
Das zweite Argument wird zurückgegeben.
Der IS NULL und IS NOT NULL Bedingungen
Wenn wir nur herausfinden wollen, ob ein Wert null ist oder nicht , können wir IS NULL verwenden Vergleichsbedingung. Wir können alternativ IS NOT NULL verwenden um zu prüfen, ob es nicht null ist .
Angenommen, wir haben die folgende Tabelle:
SELECT * FROM Autoparts
WHERE Price IS NULL; Ergebnis:
| ID | OE# | PREIS | MODELL |
|---|---|---|---|
| 2 | 62150B3278 | – | CAMRY |
| 1 | 62150A3278 | 168 | HILUX |
In diesem Fall der PRICE Spalte enthält einen Nullwert für die erste Zeile, aber nicht für die zweite Zeile.
Hier ist ein Beispiel für die Verwendung von IS NULL gegen diese Tabelle:
SELECT * FROM Autoparts
WHERE Price IS NULL; Ergebnis:
| ID | OE# | PREIS | MODELL |
|---|---|---|---|
| 2 | 62150B3278 | – | CAMRY |
Nur die Zeile mit dem Nullpreis wird zurückgegeben.
Folgendes passiert, wenn wir IS NOT NULL verwenden :
SELECT * FROM Autoparts
WHERE Price IS NOT NULL; Ergebnis:
| ID | OE# | PREIS | MODELL |
|---|---|---|---|
| 1 | 62150A3278 | 168 | HILUX |
Die andere Zeile wird zurückgegeben.