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

NVL2-Funktion in Oracle

Dieses SQL-Tutorial enthält Erläuterungen und Beispiele für die NVL2-Funktion in Oracle

Die NVL2-Funktion ist eine Verschachtelungsfunktion. Sie untersucht den ersten Eindruck. Wenn der erste Eindruck nicht null ist, gibt die NVL2-Funktion den zweiten Ausdruck zurück. Wenn die erste Impression null ist, wird der dritte Ausdruck zurückgegeben.

Ausdruck1 :Es sind die Quellwerte oder der Ausdruck, die Null enthalten können. Sie können einen Spaltennamen und eine Funktion für den Spaltennamen angeben
expr2 :Dies ist der Wert des Ausdrucks, der zurückgegeben wird, wenn expr1 nicht null ist
expr3 :Dies ist der Wert des Ausdrucks, der zurückgegeben wird, wenn expr1 null ist

Das Argument expr1 kann einen beliebigen Datentyp haben. Die Argumente expr2 und expr3 können alle Datentypen außer LONG haben.

SQL> select nvl2(user_name,1,2) from apps.fnd_user where rownum < 5;

NVL2(USER_NAME,1,2)
-------------------
1
1
1
1

SQL> select nvl2(end_date,1,2) from apps.fnd_user where rownum < 5;

NVL2(END_DATE,1,2)
------------------
1
2
1
1

Wenn die Datentypen von expr2 und expr3 unterschiedlich sind:

Wenn expr2 Zeichendaten sind, konvertiert Oracle Database expr3 in den Datentyp von expr2, bevor sie verglichen werden, es sei denn, expr3 ist eine Nullkonstante. In diesem Fall ist eine Datentypkonvertierung nicht erforderlich. Oracle gibt VARCHAR2 im Zeichensatz von expr2 zurück.

Wenn expr2 numerisch ist, bestimmt Oracle, welches Argument den höchsten numerischen Vorrang hat, wandelt das andere Argument implizit in diesen Datentyp um und gibt diesen Datentyp zurück.

Der Datentyp des Rückgabetyps ist immer derselbe wie der Datentyp von expr2, es sei denn, expr2 sind Zeichendaten, in diesem Fall ist der Rückgabewert immer varchar2

SQL> select nvl2(end_date,1,'a') from apps.fnd_user where rownum < 5;
select nvl2(end_date,1,'a') from apps.fnd_user where rownum < 5
*
ERROR at line 1:
ORA-01722: invalid number

SQL> select nvl2(end_date,'a',1) from apps.fnd_user where rownum < 5;

N
-
a
1
a
a

Nutzung 

SELECT last_name, salary, NVL2(commission_pct,
salary + (salary * commission_pct), salary) income
FROM employees WHERE last_name like 'B%'
ORDER BY last_name;

Verwandte Artikel

Einzelzeilenfunktionen in Sql
NULLIF-Funktion in Oracle
Update-Anweisung in Oracle
Coalesce-Funktion in Oracle
Oracle-LISTAGG-Funktion
Oracle-Datumsfunktionen