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

Funkce Oracle NULLIF().

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

Funkce NULLIF je velmi užitečná funkce. Porovná dvě hodnoty a vrátí null, pokud jsou hodnoty stejné, jinak vrátí první hodnotu

výraz1 :jedná se o zdrojové hodnoty nebo výraz, který bude porovnán s výrazem expr2
expr2 :Je to také zdrojová hodnota, která se porovnává s expr1

Nemůžete zadat doslovnou hodnotu NULL pro první hodnotu

 

SQL> vyberte nullif(NULL,1) z duálního;
vyberte nullif(NULL,1) z duálního
*
CHYBA na řádku 1:
ORA-00932:nekonzistentní datové typy:očekáváno – získal CHAR

Použití a příklad

SQL> vybrat nullif(1,1) z dual;NULLIF(1,1)
-----------SQL> vybrat nullif(1,2) z dual;NULLIF( 1,2)
-----------
1

Důležitá poznámka

1)Tento příkaz je velmi podobný příkazu case a je ekvivalentní jako
CASE WHEN expr1=výraz2 THEN NULL ELSE výraz1 END

2) Pokud jsou oba argumenty číselné datové typy, pak Oracle Database určí argument s vyšší číselnou prioritou, implicitně převede druhý argument na tento datový typ a vrátí tento datový typ. Pokud argumenty nejsou číselné, pak musí mít stejný datový typ Oracle, jinak Oracle vrátí chybu.

 

SQL> select nullif(1,'apple') from dual;
select nullif(1,'apple') from dual
*
ERROR na řádku 1:
ORA-00932 :nekonzistentní datové typy:očekávaný NUMBER dostal CHAR

SQL> select nullif('apple',1) from dual;
select nullif('apple',1) from dual
*
ERROR na řádku 1:
ORA-00932 :nekonzistentní datové typy:očekáván CHAR má NUMBER

Další příklady

vyberte jméno, délku(jméno),příjmení,délku(příjmení), nullif(délku(jméno),délku(příjmení)) z emp;SELECT NULLIF('neděle', 'pátek') AS check FROM dual; 

Dalším případem použití funkce NULLIF bude, pokud chcete uvést zaměstnance, kteří změnili práci od doby, kdy byli najati, jak je označeno job_id v tabulce job_history, které se liší od aktuální job_id v tabulce zaměstnanců

vyberte emp_name,nullif(b.job_id,a.job_id) old_job ze zaměstnanců a, job_history b kde a.emp_id=b.emp_id;

Časté dotazy k funkci Nullif

Jak se vyhnout chybě dělení nulou pomocí funkce NULLIF

Chybu dělení dostaneme, pokud je jmenovatel v dělení nula. Můžeme se tomu vyhnout použitím funkce NULLIF, jak je uvedeno níže
vyberte 100/ nullif(0,0) z dual;
Nyní, protože obě hodnoty jsou stejné, Nullif vrátí null a celý výraz místo toho vrátí null jakékoli chyby. Zde je návod, jak můžete použít při práci se skutečným sloupcem
select col2/ nullif(col1,0) z exp;

Související články

Aktualizovat příkaz v oracle
Funkce NVL2 v Oracle
Funkce NVL v Oracle
Funkce sloučení v Oracle
Jednořádkové funkce v sql
Odstranit z příkazu tabulky v Oracle

Externí zdroj
Reference Oracle pro NULLIF


  1. Vraťte SETOF řádky z funkce PostgreSQL

  2. Jak extrahovat n-té slovo a počítat výskyty slov v řetězci MySQL?

  3. Odstranit duplikáty pouze pomocí dotazu MySQL?

  4. Výukový program ORACLE SQL*Plus