V databázi Oracle je to NVL2()
Funkce nám umožňuje nahradit hodnoty null jinou hodnotou.
Je to podobné jako NVL()
funkce, kromě toho, že přijímá tři argumenty místo dvou. To nám umožňuje zadat jinou hodnotu, která se vrátí v případě, že první argument není null.
Syntaxe
Syntaxe vypadá takto:
NVL2(expr1, expr2, expr3)
Pokud expr1
není null, pak NVL2
vrátí expr2
. Pokud expr1
je null, pak NVL2
vrátí expr3
.
Příklad
Zde je příklad k demonstraci:
SELECT NVL2(null, 2, 3)
FROM DUAL;
Výsledek:
3
První argument byl null, a tak byl vrácen třetí argument.
A co se stane, když první argument není nulový:
SELECT NVL2(1, 2, 3)
FROM DUAL;
Výsledek:
2
Když jsou hodnoty nahrazení Null
Pokud je druhý nebo třetí argument null, můžete skončit s výsledkem null.
Příklad:
SET NULL '(null)';
SELECT
NVL2(1, null, 3) AS "r1",
NVL2(null, 2, null) AS "r2"
FROM DUAL;
Výsledek:
r1 r2 _________ _________ (null) (null)
Ohledně prvního řádku SET NULL '(null)';
, přidal jsem tento řádek, aby moje relace SQLcl vrátila tuto hodnotu, kdykoli je výsledek null.
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 (jako jsem to udělal zde).
Neplatný počet argumentů
Volání funkce bez předání jakýchkoli argumentů má za následek chybu:
SELECT NVL2()
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 NVL2(1, 2, 3, 4)
FROM DUAL;
Výsledek:
SQL Error: ORA-00909: invalid number of arguments 00909. 00000 - "invalid number of arguments"