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

NULLIF()-Funktion in Oracle

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"