Unterschied zwischen NVL und NVL2, Difference between SQL NVL and NVL2

Unterschied zwischen NVL und NVL2

Rating: 4.78/5. From 90 votes.
Please wait...
Voting is currently disabled, data maintenance in progress.
Unterschied zwischen NVL und NVL2
Unterschied zwischen NVL und NVL2

NVL und NVL2 sind beides SQL Funktionen, welche häufig in SQL Statements, SQL Prozeduren oder SQL Funktionen benötigt werden. Dieser Beitrag beschreibt den Unterschied zwischen NVL und NVL2. Bei NVL wird lediglich die erste Expression überprüft. Ist diese ungleich NULL wird das Feld ausgegeben. Tritt hier allerdings ein NULL Wert auf, so wird der zweite Ausdruck ausgeführt bzw. ausgegeben.

IF 
expr1 IS NOT NULL
THEN expr1
END IF;

IF
exp1 IS NULL
THEN expr2
END IF;
Werbung / Advertisements

Bei NVL2 hingegen muss nicht unbedingt die expr1 ausgegeben werden. Hier kann definiert werden, welcher Wert oder welches Feld ausgegeben werden.

IF 
expr1 IS NOT NULL
THEN expr2
END IF;

IF
expr1 IS NULL
THEN expr3
END IF;

NVL2 ist funktionsgleich mit NVL wenn folgendes gilt:

Werbung / Advertisements
Werbung / Advertisements
NVL(expr1, expr2) = NVL2(expr1, expr1, expr2)

Notwendig sind die Funktionen teilweise bei Abfragen. Wird zum Beispiel eine IF Abfrage durchgeführt, kann es ohne Definition von NULL Values zu einem Fehler kommen. So zum Beispiel bei aggregierten Berechnungen. Wie lautet das Ergebnis der Summe NULL + NULL bzw. undefiniert + undefiniert?

Rating: 4.78/5. From 90 votes.
Please wait...
Voting is currently disabled, data maintenance in progress.