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 CHARSQL> 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 OracleExterní zdroj
Reference Oracle pro NULLIF