sql >> Databáze >  >> RDS >> Oracle

Funkce NVL2() v Oracle

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"

  1. v SQLite

  2. Jak odebrat záhlaví sloupců při odesílání výsledků dotazu e-mailem na SQL Server (T-SQL)

  3. Nelze nainstalovat pg gem na Mountain Lion

  4. Duplikujte, kopírujte nebo zálohujte tabulky v MySQL, MariaDB, Oracle, PostgreSQL, DB2 a SQLite pomocí Create Table As SQL