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"