In der Oracle-Datenbank das NULLIF()
Funktion vergleicht zwei Ausdrücke und gibt null
zurück wenn beide Ausdrücke gleich sind. Wenn sie nicht gleich sind, gibt die Funktion den ersten Ausdruck zurück.
Syntax
Die Syntax lautet wie folgt:
NULLIF(expr1, expr2)
Beispiel
Hier ist ein Beispiel zur Veranschaulichung:
SELECT NULLIF(5, 7)
FROM DUAL;
Ergebnis:
5
In diesem Fall waren die Argumente nicht gleich, und daher gab die Funktion das erste Argument zurück.
Folgendes passiert, wenn beide Argumente gleich sind:
SET NULL 'null';
SELECT NULLIF(7, 7)
FROM DUAL;
Ergebnis:
null
Wir können dieses NULLIF()
sehen gibt null
zurück wenn beide Argumente gleich sind
Bezüglich der ersten Zeile SET NULL 'null';
, habe ich hinzugefügt, damit meine SQLcl-Sitzung null
zurückgibt immer wenn das Ergebnis null ist.
Standardmäßig geben SQLcl und SQL*Plus ein Leerzeichen zurück, wenn null
tritt als Ergebnis eines SQL SELECT
auf Erklärung.
Sie können jedoch SET NULL
verwenden um eine andere Zeichenfolge anzugeben, die zurückgegeben werden soll. Hier habe ich angegeben, dass der String null
zurückgegeben werden soll.
Im Vergleich zu CASE
Das NULLIF()
Funktion entspricht dem folgenden CASE
Ausdruck:
CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END
Ungültige Argumentanzahl
Der Aufruf der Funktion ohne Übergabe von Argumenten führt zu einem Fehler:
SELECT NULLIF()
FROM DUAL;
Ergebnis:
SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments"
Und das Übergeben zu vieler Argumente verursacht auch einen Fehler:
SELECT NULLIF(1, 2, 3)
FROM DUAL;
Ergebnis:
SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments"