In der Oracle-Datenbank die NVL2()
Mit der Funktion können wir Nullwerte durch einen anderen Wert ersetzen.
Es ähnelt dem NVL()
-Funktion, außer dass sie drei statt zwei Argumente akzeptiert. Dadurch können wir einen anderen Wert angeben, der zurückgegeben werden soll, falls das erste Argument nicht null ist.
Syntax
Die Syntax sieht so aus:
NVL2(expr1, expr2, expr3)
Wenn expr1
nicht null ist, dann NVL2
gibt expr2
zurück . Wenn expr1
null ist, dann NVL2
gibt expr3
zurück .
Beispiel
Hier ist ein Beispiel zur Veranschaulichung:
SELECT NVL2(null, 2, 3)
FROM DUAL;
Ergebnis:
3
Das erste Argument war null und daher wurde das dritte Argument zurückgegeben.
Und Folgendes passiert, wenn das erste Argument nicht null ist:
SELECT NVL2(1, 2, 3)
FROM DUAL;
Ergebnis:
2
Wenn die Ersatzwerte Null sind
Wenn das zweite oder dritte Argument null ist, könnte das Ergebnis null sein.
Beispiel:
SET NULL '(null)';
SELECT
NVL2(1, null, 3) AS "r1",
NVL2(null, 2, null) AS "r2"
FROM DUAL;
Ergebnis:
r1 r2 _________ _________ (null) (null)
Bezüglich der ersten Zeile SET NULL '(null)';
, habe ich diese Zeile hinzugefügt, damit meine SQLcl-Sitzung diesen Wert zurückgibt, 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 (wie ich es hier getan habe).
Ungültige Argumentanzahl
Der Aufruf der Funktion ohne Übergabe von Argumenten führt zu einem Fehler:
SELECT NVL2()
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 NVL2(1, 2, 3, 4)
FROM DUAL;
Ergebnis:
SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments"