В Oracle Database, NULLIF() функцията сравнява два израза и връща null ако и двата израза са равни. Ако не са равни, тогава функцията връща първия израз.
Синтаксис
Синтаксисът е така:
NULLIF(expr1, expr2) Пример
Ето пример за демонстрация:
SELECT NULLIF(5, 7)
FROM DUAL; Резултат:
5
В този случай аргументите не бяха равни и така функцията върна първия аргумент.
Ето какво се случва, когато и двата аргумента са равни:
SET NULL 'null';
SELECT NULLIF(7, 7)
FROM DUAL; Резултат:
null
Можем да видим, че NULLIF() връща null когато и двата аргумента са равни
По отношение на първия ред SET NULL 'null'; , добавих това, така че моята SQLcl сесия връща null когато резултатът е нулев.
По подразбиране SQLcl и SQL*Plus връщат празно пространство всеки път, когато null възниква в резултат на SQL SELECT изявление.
Можете обаче да използвате SET NULL за да посочите различен низ, който да бъде върнат. Тук посочих, че низът null трябва да бъдат върнати.
В сравнение с CASE
NULLIF() функцията е еквивалентна на следния CASE израз:
CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END Невалиден брой аргументи
Извикването на функцията без предаване на аргументи води до грешка:
SELECT NULLIF()
FROM DUAL; Резултат:
SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments"
И предаването на твърде много аргументи също води до грешка:
SELECT NULLIF(1, 2, 3)
FROM DUAL; Резултат:
SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments"