Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Funkcja Oracle NULLIF()

Ten samouczek SQL zawiera wyjaśnienia, przykłady funkcji NULLIF w Oracle

Funkcja NULLIF jest bardzo przydatną funkcją. Porównuje dwie wartości i zwraca null, jeśli wartości są takie same, w przeciwnym razie zwraca pierwszą wartość

wyr1 :są to wartości źródłowe lub wyrażenie, które będzie porównywane z wyrażeniem2
wyrażenie2 :Jest to również wartość źródłowa, która jest porównywana z wyrażeniem 1

Nie możesz określić literału NULL dla pierwszej wartości

SQL> select nullif(NULL,1) from dual;
select nullif(NULL,1) from dual
*
ERROR at line 1:
ORA-00932: inconsistent datatypes: expected - got CHAR

Użycie i przykład

SQL> select nullif(1,1) from dual;
NULLIF(1,1)
----------- SQL> select nullif(1,2) from dual; NULLIF(1,2)
-----------
1

Ważna uwaga

1) Ta instrukcja jest bardzo podobna do instrukcji case i jest równoważna jako
CASE WHEN expr1=expr2 THEN NULL ELSE expr1 END

2) Jeśli oba argumenty są liczbowymi typami danych, Oracle Database określa argument o wyższym priorytecie liczbowym, niejawnie konwertuje drugi argument na ten typ danych i zwraca ten typ danych. Jeśli argumenty nie są numeryczne, muszą mieć ten sam typ danych Oracle, w przeciwnym razie Oracle zwróci błąd.

SQL> select nullif(1,'apple') from dual;
select nullif(1,'apple') from dual
*
ERROR at line 1:
ORA-00932: inconsistent datatypes: expected NUMBER got CHAR

SQL> select nullif('apple',1) from dual;
select nullif('apple',1) from dual
*
ERROR at line 1:
ORA-00932: inconsistent datatypes: expected CHAR got NUMBER

Więcej przykładów

select first_name, length(first_name),last_name,
length(last_name), nullif(length(first_name),length(last_name))
 from emp;

SELECT NULLIF('Sunday', 'Friday') AS check FROM dual;

Innym przypadkiem użycia funkcji NULLIF będzie, jeśli chcesz wyświetlić listę pracowników, którzy zmienili pracę od czasu zatrudnienia, jak wskazuje job_id w tabeli job_history inny niż bieżący identyfikator job_id w tabeli Pracownicy

select emp_name,nullif(b.job_id,a.job_id) old_job from employees a,   job_history  b where a.emp_id=b.emp_id;

Najczęściej zadawane pytania dotyczące funkcji Nulif

Jak uniknąć błędu dzielenia przez zero za pomocą funkcji NULLIF

Otrzymujemy błąd dzielenia przez zero, jeśli mianownik w dzieleniu wynosi zero. Możemy tego uniknąć, używając funkcji NULLIF jak poniżej
wybierz 100/ nullif(0,0) z dual;
Teraz tutaj, ponieważ obie wartości są równe, Nullif zwróci null, a całe wyrażenie zwróci null jakiegokolwiek błędu. Oto jak możesz użyć w przypadku prawdziwej kolumny
select col2/ nullif(col1,0) z exp;

Powiązane artykuły

Aktualizuj instrukcję w oracle
Funkcja NVL2 w Oracle
Funkcja NVL w Oracle
Funkcja łączenia w Oracle
Funkcje jednowierszowe w sql
Usuń instrukcję z tabeli w Oracle

Zasób zewnętrzny
Odniesienie Oracle dla 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. Oracle SQL — Zidentyfikuj kolejne zakresy wartości

  2. WHERE IN warunek nie akceptuje wartości ciągu

  3. Czy istnieje typ sygnatury czasowej automatycznej modyfikacji dla kolumn Oracle?

  4. interwał formatu z to_char

  5. Jak mogę policzyć liczbę słów w ciągu w Oracle?