Oracle
 sql >> Datenbank >  >> RDS >> Oracle

Oracle ISNULL()-Äquivalent

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.