Funkce Oracle NVL

Funkce Oracle Nvl



Nulová hodnota je pole, které zůstalo prázdné nebo nemá přiřazenou hodnotu.

Hodnoty NULL jsou v databázích běžné, zejména při importu externích dat. Pokud tedy sloupec neobsahuje omezení zabraňující hodnotám NULL, databázový stroj pravděpodobně použije pro chybějící hodnotu hodnotu NULL.







Přestože jsou hodnoty NULL běžné, mohou vést k problémům s databází, protože databáze nemá žádnou hodnotu, se kterou by se dalo pracovat. Je proto vhodné použít akce ke zpracování hodnot NULL ve vašich dotazech.



V tomto příspěvku se naučíme, jak převést hodnoty NULL v dané tabulce tak, aby obsahovaly výchozí hodnotu, u které je méně pravděpodobné, že způsobí chyby operace ve vaší databázi.



Funkce Oracle NVL

Jak již bylo zmíněno, tato funkce nám umožňuje nahradit hodnoty NULL smysluplnějšími hodnotami. Syntaxe funkce je uvedena níže:





NVL ( expr1, expr2 ) ;

Funkce přijímá dva hlavní argumenty:

expr1 a expr2 – tento parametr definuje hodnotu, která má být testována na hodnoty NULL. Pokud je hodnota expr1 NULL, funkce vrátí hodnotu expr2.



Oba výrazy mohou mít podobné nebo různé datové typy. Pokud se odpovídající datové typy liší, databázový stroj může provést implicitní převod, aby byla umožněna kompatibilita s datovými typy. Pokud není možné převést odpovídající datové typy, databázový stroj vyvolá chybu.

Příklad použití funkce Oracle NVL().

Následující příklad ukazuje základní použití funkce NVL():

Příklad 1

Zvažte následující příklad:

vybrat lvl ( 'Ahoj' , 'svět' ) z duálu;

V předchozím příkladu jsme pomocí funkce NVL() otestovali, zda má řetězec ‚hello‘ hodnotu NULL. Protože zadaná hodnota není null, funkce vrátí řetězec „hello“.

Příklad 2

Zvažte druhý příklad uvedený níže:

vybrat lvl ( nula, 'svět' ) z duálu;

V tomto případě, protože první výraz je hodnota NULL, dotaz vrátí druhý řetězec, jak je uvedeno níže:

Příklad 3

K nahrazení hodnot NULl v databázové tabulce můžeme také použít funkci NVL(). Zvažte tabulku zaměstnanců uvedenou níže:

vybrat FIRST_NAME, LAST_NAME, EMAIL, SALARY, COMMISSION_PCT od EMPLOYEES emp;

Výsledná tabulka:

Jak vidíme, sloupec Commission_pct obsahuje hodnoty NULl. Můžeme vytvořit dotaz, který nahradí hodnoty NULL ze sloupce Commission_pct 0, jak je znázorněno v příkladu níže:

vybrat FIRST_NAME, LAST_NAME, EMAIL, SALARY, nvl ( COMMISSION_PCT, 0 )
od ZAMĚSTNANCŮ zam.;

V předchozím příkladu dotazu používáme funkci NVL() k testování hodnoty ve sloupci Commission_pct na hodnoty NULL. Pokud existuje hodnota NULL, vrátíme 0. V opačném případě vrátíme původní hodnotu.

To by nám mělo umožnit nahradit hodnoty NULL ve sloupci 0, jak je uvedeno ve výsledné tabulce níže:

Můžeme to použít s příkazem UPDATE nebo uložit výslednou hodnotu do tabulkového zobrazení.

Závěr

V tomto kurzu jste se naučili, jak používat funkci Oracle NVL() k nahrazení hodnot NULL výchozími hodnotami. Je dobré mít na paměti, že ačkoli se funkce NVL() velmi podobá funkci COALESCE(), funkce NVL() může vrátit pouze jednu hodnotu. Zároveň může funkce coalesce() vracet více hodnot.

Pokud hledáte funkci, která může mít více než dva argumenty bez použití funkce coalesce(), zvažte funkci NVL2().