Tento kurz SQL poskytuje vysvětlení a příklady pro funkci NVL2 v Oracle
Funkce NVL2 je funkce vnoření. Zkoumá první dojem, pokud první dojem není nulový, pak funkce NVL2 vrátí druhý výraz. pokud je první zobrazení null, vrátí třetí výraz.
výraz1 :jsou to zdrojové hodnoty nebo výraz, který může obsahovat null. V názvu sloupce můžete uvést název sloupce, funkci
expr2 :Toto je hodnota výrazu, která je vrácena, pokud výraz expr1 není null
výraz3 :Toto je hodnota výrazu, která je vrácena, pokud je výraz1 null
Argument expr1 může mít libovolný datový typ. Argumenty expr2 a expr3 mohou mít libovolné datové typy kromě 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
Pokud se datové typy expr2 a expr3 liší:
Pokud jsou expr2 znaková data, pak Oracle Database převede expr3 na datový typ expr2, než je porovná, pokud expr3 není nulová konstanta. V takovém případě není převod datových typů nutný. Oracle vrací VARCHAR2 ve znakové sadě výrazu expr2.
Pokud je výraz expr2 číselný, pak Oracle určí, který argument má nejvyšší číselnou prioritu, implicitně převede druhý argument na tento datový typ a vrátí tento datový typ.
Datový typ návratového typu je vždy stejný jako datový typ expr2, pokud výraz expr2 nejsou znaková data, přičemž návratová hodnota je vždy 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
Využití
SELECT last_name, salary, NVL2(commission_pct, salary + (salary * commission_pct), salary) income FROM employees WHERE last_name like 'B%' ORDER BY last_name;
Související články
Jednořádkové funkce v Sql
Funkce NULLIF v Oracle
Aktualizační příkaz v oracle
Funkce sloučení v Oracle
Funkce Oracle LISTAGG
Funkce data oracle