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"