Funkcia Oracle NVL

Funkcia Oracle Nvl



Nulová hodnota je pole, ktoré zostalo prázdne alebo nemá priradenú žiadnu hodnotu.

Hodnoty NULL sú bežné v databázach, najmä pri importe externých údajov. Preto, pokiaľ stĺpec neobsahuje obmedzenie na zabránenie hodnotám NULL, databázový nástroj pravdepodobne použije pre chýbajúcu hodnotu hodnotu NULL.







Hoci hodnoty NULL sú bežné, môžu viesť k problémom s databázou, pretože databáza nemá žiadnu hodnotu, s ktorou by sa dalo pracovať. Preto je dobrým zvykom použiť akcie na spracovanie hodnôt NULL vo vašich dotazoch.



V tomto príspevku sa naučíme, ako previesť hodnoty NULL v danej tabuľke tak, aby obsahovali predvolenú hodnotu, ktorá s menšou pravdepodobnosťou spôsobí chyby operácie vo vašej databáze.



Funkcia Oracle NVL

Ako už bolo spomenuté, táto funkcia nám umožňuje nahradiť hodnoty NULL zmysluplnejšími hodnotami. Syntax funkcie je uvedená nižšie:





NVL ( expr1, expr2 ) ;

Funkcia akceptuje dva hlavné argumenty:

expr1 a expr2 – tento parameter definuje hodnotu, ktorá sa má testovať na hodnoty NULL. Ak je hodnota výrazu1 NULL, funkcia vráti hodnotu výrazu2.



Oba výrazy môžu mať podobné alebo odlišné typy údajov. Ak sa zodpovedajúce typy údajov líšia, databázový stroj môže vykonať implicitnú konverziu, aby bola umožnená kompatibilita s typmi údajov. Ak nie je možné konvertovať príslušné typy údajov, databázový nástroj vyvolá chybu.

Príklad použitia funkcie Oracle NVL().

Nasledujúci príklad demonštruje základné použitie funkcie NVL():

Príklad 1

Zvážte nasledujúci príklad:

vyberte lvl ( 'Ahoj' , 'svet' ) z duálneho;

V predchádzajúcom príklade sme pomocou funkcie NVL() otestovali, či reťazec „hello“ má hodnotu NULL. Keďže zadaná hodnota nie je nulová, funkcia vráti reťazec „ahoj“.

Príklad 2

Zvážte druhý príklad uvedený nižšie:

vyberte lvl ( nulový, 'svet' ) z duálneho;

V tomto prípade, keďže prvý výraz je hodnota NULL, dotaz vráti druhý reťazec, ako je uvedené nižšie:

Príklad 3

Na nahradenie hodnôt NULl v databázovej tabuľke môžeme použiť aj funkciu NVL(). Zvážte tabuľku zamestnancov uvedenú nižšie:

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

Výsledná tabuľka:

Ako vidíme, stĺpec Commission_pct obsahuje hodnoty NULl. Môžeme vytvoriť dotaz na nahradenie hodnôt NULL zo stĺpca Commission_pct hodnotou 0, ako je uvedené v príklade nižšie:

vyberte FIRST_NAME, LAST_NAME, EMAIL, SALARY, nvl ( COMMISSION_PCT, 0 )
z EMPLOYEES zam.;

V predchádzajúcom príklade dotazu používame funkciu NVL() na testovanie hodnoty v stĺpci Commission_pct na hodnoty NULL. Ak existuje hodnota NULL, vrátime 0. V opačnom prípade vrátime pôvodnú hodnotu.

To by nám malo umožniť nahradiť hodnoty NULL v stĺpci 0, ako je uvedené vo výslednej tabuľke nižšie:

Môžeme to použiť s príkazom UPDATE alebo uložiť výslednú hodnotu do tabuľkového zobrazenia.

Záver

V tomto návode ste sa naučili používať funkciu Oracle NVL() na nahradenie hodnôt NULL predvolenými hodnotami. Je dobré mať na pamäti, že hoci sa funkcia NVL() veľmi podobá na funkciu COALESCE(), funkcia NVL() môže vrátiť iba jednu hodnotu. Zároveň funkcia coalesce() môže vrátiť viacero hodnôt.

Ak hľadáte funkciu, ktorá môže prijať viac ako dva argumenty bez použitia funkcie coalesce(), zvážte funkciu NVL2().