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.