Този урок за SQL предоставя обяснения, примери за функцията NULLIF в Oracle
Функцията NULLIF е много полезна функция. Тя сравнява две стойности и връща null, ако стойностите са еднакви, иначе връща първата стойност
израз1 :това е изходните стойности или израз, който ще се сравнява с expr2
expr2 :Това също е стойността на източника, която се сравнява с expr1
Не можете да посочите литерала NULL за първата стойност
SQL> изберете nullif(NULL,1) от dual;
изберете nullif(NULL,1) от dual
*
ГРЕШКА на ред 1:
ORA-00932:непоследователни типове данни:очаквано - получих CHAR
Употреба и пример
SQL> изберете nullif(1,1) от dual;NULLIF(1,1)
-----------SQL> изберете nullif(1,2) от dual;NULLIF( 1,2)
----------
1
Важна забележка
1) Това изявление е много подобно на изявлението case и е еквивалентно на
CASE WHEN expr1=expr2 THEN NULL ELSE expr1 END
2) Ако и двата аргумента са числови типове данни, тогава Oracle Database определя аргумента с по-висок числов приоритет, имплицитно преобразува другия аргумент в този тип данни и връща този тип данни. Ако аргументите не са числови, тогава те трябва да са от същия тип данни на Oracle или Oracle връща грешка.
SQL> изберете nullif(1,'apple') от dual;
изберете nullif(1,'apple') от dual
*
ГРЕШКА на ред 1:
ORA-00932 :непоследователни типове данни:очакван NUMBER получи CHARSQL> изберете nullif('apple',1) от двойно;
изберете nullif('apple',1) от двойно
*
ГРЕШКА на ред 1:
ORA-00932 :непоследователни типове данни:очакваният CHAR получи NUMBER
Още примери
изберете first_name, length(first_name),last_name,length(last_name), nullif(length(first_name),length(last_name)) от emp;SELECT NULLIF('Sunday', 'Friday') AS проверете FROM dual;предварително>Друг случай на използване на функцията NULLIF ще бъде, ако искате да изброите служителите, които са сменили работни места откакто са били наети, както е посочено от job_id в таблицата job_history, различен от текущия job_id в таблицата на служителите
изберете emp_name,nullif(b.job_id,a.job_id) old_job от служители a, job_history b, където a.emp_id=b.emp_id;ЧЗВ за функцията Nullif
Как да избегнем грешка при деление на нула с помощта на функцията NULLIF
Получаваме грешка при деление на нула, ако знаменателят в делението е нула. Можем да избегнем, като използваме функцията NULLIF, както е посочено по-долу
изберете 100/ nullif(0,0) от dual;
Сега тук, тъй като и двете стойности са равни, Nullif ще върне null и вместо това целият израз ще върне null на каквато и да е грешка. Ето как можете да използвате, когато работите с реална колона
select col2/ nullif(col1,0) от exp;Сродни статии
Актуализиране на израза в Oracle
NVL2 функция в Oracle
NVL функция в Oracle
Обединяване на функция в Oracle
Едноредови функции в sql
Изтриване от оператор на таблица в OracleВъншен ресурс
Справочник на Oracle за NULLIF