sql >> Databáze >  >> RDS >> Oracle

Funkce NVL2 v Oracle

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


  1. Žádné jedinečné nebo vyloučení omezení neodpovídá ON CONFLICT

  2. SQL dotaz k vytvoření databáze v MySQL

  3. Instalace pg gem; CHYBA:Nepodařilo se vytvořit nativní rozšíření drahokamů

  4. Jak se připojit k první řadě