Този урок за SQL предоставя обяснения, примери за функцията NVL2 в Oracle
Функцията NVL2 е функция за влагане. Тя проверява първото впечатление, ако първото впечатление не е нула, тогава функцията NVL2 връща втория израз. ако първото впечатление е нула, то връща третия израз.
израз1 :това е изходните стойности или израз, който може да съдържа null. Можете да предоставите име на колона, функция на името на колоната
expr2 :Това е стойността на израза, който се връща, ако expr1 не е null
expr3 :Това е стойността на израза, който се връща, ако expr1 е нула
Аргументът expr1 може да има произволен тип данни. Аргументите expr2 и expr3 могат да имат всякакви типове данни освен LONG.
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
Ако типовете данни на expr2 и expr3 са различни:
Ако expr2 е символни данни, тогава Oracle Database преобразува expr3 в типа данни на expr2, преди да ги сравни, освен ако expr3 е нулева константа. В този случай не е необходимо преобразуване на тип данни. Oracle връща VARCHAR2 в набора от знаци на expr2.
Ако expr2 е числов, тогава Oracle определя кой аргумент има най-висок числов приоритет, имплицитно преобразува другия аргумент в този тип данни и връща този тип данни.
Типът данни на типа на връщането винаги е същият като типа на данните на expr2, освен ако expr2 не е символни данни, като връщаната стойност винаги е 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
Употреба
SELECT last_name, salary, NVL2(commission_pct, salary + (salary * commission_pct), salary) income FROM employees WHERE last_name like 'B%' ORDER BY last_name;
Сродни статии
Едноредови функции в Sql
функция NULLIF в Oracle
Изявление за актуализиране в oracle
обединяваща функция в Oracle
функция Oracle LISTAGG
функции за дата на oracle