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 CHARSQL> 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