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

Jak používat funkci NVL() v Oracle

Tento tutoriál Oracle SQL poskytuje vysvětlení a příklady funkcí NVL v Oracle

Co je funkce NVL() v Oracle

Funkce NVL v Oracle je funkce vnoření, která se používá k nahrazení hodnot null určitými hodnotami

Ve výše uvedené syntaxi

výraz1 :jsou to zdrojové hodnoty nebo výraz, který může obsahovat null. Můžete zadat název sloupce, funkci v názvu sloupce
výraz2:Je to cílová hodnota, která bude umístěna v případě, že se z výrazu vrátí null

Pokud má výraz expr1 hodnotu null, pak NVL vrátí výraz výraz2. Pokud výraz expr1 není null, pak NVL vrátí výraz expr1.

Důležité poznámky
(1) Argumenty expr1 a expr2 mohou mít libovolný datový typ. Pokud se jejich datové typy liší, Oracle Database implicitně převede jeden na druhý. Pokud je nelze implicitně převést, databáze vrátí chybu.
Pokud jsou expr1 znaková data, pak Oracle Database převede expr2 na datový typ expr1, než je porovná a vrátí VARCHAR2 ve znakové sadě výrazu1.

Pokud je výraz expr1 čí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.

Takže následující tvrzení by uspělo

select nvl(num-col ,10) from select nvl(char-col ,'NA') from 
select nvl(end_date,'01-MAY-18') from

Následující příkaz by provedl implicitní konverzi

vyberte nvl(char-col ,1) z 

Následující příkaz by selhal

select nvl(end_date,'m/a') from 
select nvl(user_id,'abc') from

Jak používat funkci NVL()


Tato funkce je velmi užitečná tam, kde nechceme vracet hodnoty null nebo v numerickém výpočtu, protože null by změnil celé hodnoty na null

Pojďme vezměte si příklad, abyste to pochopili
Máme tabulku sales_people, která obsahuje prodeje uskutečněné prodejci, % provize z prodeje, plat lidí. Chceme vypočítat celkové měsíční příjmy pro prodejce. Prodej může mít hodnoty null

Vyjádření by bylo

vyberte jméno,(plat + prodej*provize/100)  Měsíční_příjem od sales_people;

Vrátí hodnoty null všech lidí, kteří v daném období neprovedli žádný prodej, protože výpočet bude mít hodnoty null

To lze opravit pomocí funkce nvl jako

vyberte jméno,(plat + nvl(prodej,0)*provize/100) Měsíční_příjem od sales_people;

Je tedy zjevně velmi užitečné při provádění matematických operací. Funkce NVL v Oracle je docela užitečná funkce a lze ji použít na mnoha místech

Také čte
Funkce data Oracle SQL
Funkce NULLIF v Oracle
Aktualizace příkazu v oracle
Funkce Coalesce v Oracle
změna formátu data v oracle
https://docs .oracle.com/cd/B19306_01/server.102/b14200/functions105.htm


  1. Který SQL dotaz je lepší, MATCH AGAINST nebo LIKE?

  2. Jak zjistit počet dní mezi dvěma daty v MySQL

  3. Podpora dBase je zpět v aplikaci Microsoft Access!

  4. Oracle:Existuje způsob, jak získat nedávné chyby syntaxe SQL?