W bazie danych Oracle NULLIF() funkcja porównuje dwa wyrażenia i zwraca null jeśli oba wyrażenia są równe. Jeśli nie są równe, funkcja zwraca pierwsze wyrażenie.
Składnia
Składnia wygląda tak:
NULLIF(expr1, expr2) Przykład
Oto przykład do zademonstrowania:
SELECT NULLIF(5, 7)
FROM DUAL; Wynik:
5
W tym przypadku argumenty nie były równe, więc funkcja zwróciła pierwszy argument.
Oto, co się dzieje, gdy oba argumenty są równe:
SET NULL 'null';
SELECT NULLIF(7, 7)
FROM DUAL; Wynik:
null
Widzimy, że NULLIF() zwraca null gdy oba argumenty są równe
Odnośnie pierwszej linii SET NULL 'null'; , dodałem to, aby moja sesja SQLcl zwracała null ilekroć wynik jest pusty.
Domyślnie SQLcl i SQL*Plus zwracają spację, gdy null występuje w wyniku polecenia SQL SELECT oświadczenie.
Możesz jednak użyć SET NULL aby określić inny ciąg do zwrócenia. Tutaj określiłem, że ciąg null należy zwrócić.
W porównaniu z CASE
NULLIF() funkcja jest odpowiednikiem następującego CASE wyrażenie:
CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END Nieprawidłowa liczba argumentów
Wywołanie funkcji bez przekazywania jakichkolwiek argumentów skutkuje błędem:
SELECT NULLIF()
FROM DUAL; Wynik:
SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments"
Przekazywanie zbyt wielu argumentów również powoduje błąd:
SELECT NULLIF(1, 2, 3)
FROM DUAL; Wynik:
SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments"