Oracle
 sql >> база данни >  >> RDS >> Oracle

Функция Oracle NULLIF().

Този урок за 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 получи CHAR

SQL> изберете 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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Дървовидна структура в sql в Oracle. Как да покажа дърво, дъщерни възли и родителски възли в SQL Oracle

  2. Как да добавите индикатора Meridiem (AM/PM) към времева стойност в Oracle

  3. PostgreSQL срещу Oracle:Разлика в разходите, лекотата на използване и функционалността

  4. Връщане на резултати от sql заявка като JSON в oracle 12c

  5. Има ли начин да създадете множество тригери в един скрипт?