V databázi Oracle je to NULLIF()
funkce porovná dva výrazy a vrátí null
jsou-li oba výrazy stejné. Pokud se nerovnají, funkce vrátí první výraz.
Syntaxe
Syntaxe vypadá takto:
NULLIF(expr1, expr2)
Příklad
Zde je příklad k demonstraci:
SELECT NULLIF(5, 7)
FROM DUAL;
Výsledek:
5
V tomto případě se argumenty nerovnaly, a tak funkce vrátila první argument.
Co se stane, když jsou oba argumenty stejné:
SET NULL 'null';
SELECT NULLIF(7, 7)
FROM DUAL;
Výsledek:
null
Vidíme, že NULLIF()
vrátí null
když jsou oba argumenty stejné
Ohledně prvního řádku SET NULL 'null';
, přidal jsem to, aby moje relace SQLcl vrátila null
vždy, když je výsledek nulový.
Ve výchozím nastavení vrátí SQLcl a SQL*Plus prázdné místo vždy, když null
dochází v důsledku SQL SELECT
prohlášení.
Můžete však použít SET NULL
určit jiný řetězec, který má být vrácen. Zde jsem uvedl, že řetězec null
by měl být vrácen.
Ve srovnání s CASE
NULLIF()
funkce je ekvivalentem následujícího CASE
výraz:
CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END
Neplatný počet argumentů
Volání funkce bez předání jakýchkoli argumentů má za následek chybu:
SELECT NULLIF()
FROM DUAL;
Výsledek:
SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments"
A předání příliš mnoha argumentů také způsobí chybu:
SELECT NULLIF(1, 2, 3)
FROM DUAL;
Výsledek:
SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments"