В 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"