Oracle nvl opis. NVL transformacije za različite tipove podataka

23.01.2022 Programi

NVL funkcija

Općenito se najčešće koristi funkcija NVL. Funkcija prima dva parametra: NVL(expr1, expr2). Ako prvi parametar expr1 nije NULL, tada funkcija vraća njegovu vrijednost. Ako je prvi parametar NULL, tada funkcija umjesto toga vraća vrijednost drugog parametra expr2.

Razmotrimo praktični primjer. COMM polje u EMP tablici može sadržavati NULL vrijednosti. Prilikom izvršavanja upita poput:

SELECT EMPNO, ENAME, COMM, NVL(COMM, 0) NVL_COMM

OD SCOTT.EMP

nulta vrijednost bit će zamijenjen nulom. Imajte na umu da ako je vrijednost generirana pomoću funkcije, dodijeljen joj je alias. Rezultati upita će izgledati ovako:

EMPNO ENAME COMM NVL_COMM
7369 SMITH 0
7499 ALLEN 300 300
7521 WARD 500 500
7566 JONES 0
7654 MARTINE 1400 1400
7698 BLAKE 0
7782 CLARK 0
7839 KRALJ 0
7844 TOKAR 0 0
7900 JAMES 0
7902 FORD 0
7934 MLINAR 0

CEIL(n) funkcija

Funkcija CEIL vraća najmanji cijeli broj veći ili jednak broju n koji je proslijeđen kao parametar. Na primjer:

SELECT CEIL(100) X1, CEIL(-100) X2, CEIL(100.2) X3 , CEIL(-100.2) X4

OD DUALNOG

TRUNC(n[,m])

Funkcija TRUNC vraća broj n skraćen na m decimalnih mjesta. Parametar m može se izostaviti, u kojem slučaju se n skraćuje na cijeli broj.

SELECT TRUNC(100.25678) X1, TRUNC(-100.25678) X2, TRUNC(100.99) X3,

TRUNC(100.25678, 2) X4

OD DUALNOG

SIGN(n) funkcija

Funkcija SIGN određuje predznak broja. Ako je n pozitivan, tada funkcija vraća 1. Ako je negativan, vraća -1. Ako je nula, vraća se 0. Na primjer:

SELECT SIGN(100.22) X1, SIGN(-100.22) X2, SIGN(0) X3

OD DUALNOG

Zanimljiva značajka ove funkcije je mogućnost prosljeđivanja m jednakog nuli bez pogreške dijeljenja s 0.

POWER(n, m) funkcija

Funkcija POWER podiže broj n na potenciju m. Stupanj može biti frakcijski i negativan, što značajno proširuje mogućnosti ove funkcije.

ODABERITE SNAGU (10, 2) X1, SNAGU (100, 1/2) X2,

POWER(1000, 1/3) X3, POWER(1000, -1/3) X4

OD DUALNOG

X1 X2 X3 X4
100 10 10 0,1

U nekim slučajevima može doći do iznimke prilikom poziva ove funkcije. Na primjer:

ODABERITE SNAGU (-100, 1/2) X2

OD DUALNOG

U ovom slučaju pokušava se izračunati kvadratni korijen od negativan broj, što će rezultirati pogreškom ORA-01428 "Argument izvan raspona".

Funkcija SQRT(n)

Ova funkcija vraća kvadratni korijen od n. Na primjer:

SELECT SQRT(100) X

OD DUALNOG

EXP(n) i LN(n) funkcije

Funkcija EXP podiže e na potenciju n, a funkcija LN izračunava prirodni logaritam od n (pri čemu n mora biti veće od nule). Primjer:

SELECT EXP(2) X1, LN(1) X2, LN(EXP(2)) X3

NVL funkcija

Općenito se najčešće koristi funkcija NVL. Funkcija prima dva parametra: NVL(expr1, expr2). Ako prvi parametar expr1 nije NULL, tada funkcija vraća njegovu vrijednost. Ako je prvi parametar NULL, tada funkcija umjesto toga vraća vrijednost drugog parametra expr2.

Razmotrimo praktični primjer. COMM polje u EMP tablici može sadržavati NULL vrijednosti. Prilikom izvršavanja upita poput:

SELECT EMPNO, ENAME, COMM, NVL(COMM, 0) NVL_COMM

OD SCOTT.EMP

vrijednost NULL bit će zamijenjena nulom. Imajte na umu da ako je vrijednost generirana pomoću funkcije, dodijeljen joj je alias. Rezultati upita će izgledati ovako:

EMPNO ENAME COMM NVL_COMM
7369 SMITH 0
7499 ALLEN 300 300
7521 WARD 500 500
7566 JONES 0
7654 MARTINE 1400 1400
7698 BLAKE 0
7782 CLARK 0
7839 KRALJ 0
7844 TOKAR 0 0
7900 JAMES 0
7902 FORD 0
7934 MLINAR 0

CEIL(n) funkcija

Funkcija CEIL vraća najmanji cijeli broj veći ili jednak broju n koji je proslijeđen kao parametar. Na primjer:

SELECT CEIL(100) X1, CEIL(-100) X2, CEIL(100.2) X3 , CEIL(-100.2) X4

OD DUALNOG

TRUNC(n[,m])

Funkcija TRUNC vraća broj n skraćen na m decimalnih mjesta. Parametar m može se izostaviti, u kojem slučaju se n skraćuje na cijeli broj.

SELECT TRUNC(100.25678) X1, TRUNC(-100.25678) X2, TRUNC(100.99) X3,

TRUNC(100.25678, 2) X4

OD DUALNOG

SIGN(n) funkcija

Funkcija SIGN određuje predznak broja. Ako je n pozitivan, tada funkcija vraća 1. Ako je negativan, vraća -1. Ako je nula, vraća se 0. Na primjer:

SELECT SIGN(100.22) X1, SIGN(-100.22) X2, SIGN(0) X3

OD DUALNOG

Zanimljiva značajka ove funkcije je mogućnost prosljeđivanja m jednakog nuli bez pogreške dijeljenja s 0.

POWER(n, m) funkcija

Funkcija POWER podiže broj n na potenciju m. Stupanj može biti frakcijski i negativan, što značajno proširuje mogućnosti ove funkcije.

ODABERITE SNAGU (10, 2) X1, SNAGU (100, 1/2) X2,

POWER(1000, 1/3) X3, POWER(1000, -1/3) X4

OD DUALNOG

X1 X2 X3 X4
100 10 10 0,1

U nekim slučajevima može doći do iznimke prilikom poziva ove funkcije. Na primjer:

ODABERITE SNAGU (-100, 1/2) X2

OD DUALNOG

U ovom slučaju pokušava se izračunati kvadratni korijen negativnog broja, što će rezultirati pogreškom ORA-01428 "Argument izvan raspona".

Funkcija SQRT(n)

Ova funkcija vraća kvadratni korijen od n. Na primjer:

SELECT SQRT(100) X

OD DUALNOG

EXP(n) i LN(n) funkcije

Funkcija EXP podiže e na potenciju n, a funkcija LN izračunava prirodni logaritam od n (pri čemu n mora biti veće od nule). Primjer:

SELECT EXP(2) X1, LN(1) X2, LN(EXP(2)) X3

TO_CHAR funkcija s brojevima

Funkcije za pretvaranje podataka u druge vrste podataka. TO_CHAR(broj) pretvara broj u tekst. TO_NUMBER(niz) pretvara tekst u broj.

SELECT TO_CHAR (123) FROM DUAL će vratiti niz 123, SELECT TO_NUMBER (`12345") FROM DUAL će vratiti broj 12345.

Laboratorijski rad. Promjena formata izlaznih brojeva

Promjene numeričkog formata u Oracle SQL, funkcija TO_CHAR za rad s numeričkim vrijednostima.

Zadatak:

Napišite upit koji prikazuje podatke o imenu, prezimenu i plaći zaposlenika iz tablice hr.employees u formatu prikazanom na slici 1. 3.4-1:

Riža. 3.4 -1

Pritom podatke treba sortirati na način da se prvi prikazuju redovi za zaposlenike s najvećom plaćom.

Bilješka:

Neke vrijednosti plaća na sl. 3.4-1 su promijenjeni tako da možda ne odgovaraju vašim vrijednostima.

Odluka:

SELECT first_name AS "First Name", last_name As "Last Name", TO_CHAR(SALARY, "L999999999.99") As "Plaća" FROM hr.employees ORDER BY SALARY DESC.

Funkcije TO_NUMBER i TO_DATE

Funkcija za pretvaranje niza u datum TO_DATE(string, format). Moguće vrijednosti formata već su raspravljene gore, pa ću dati nekoliko primjera korištenja ove funkcije. Primjeri:

IZABERI TO_DATE("1.1.2010.", `DD.MM.GGGG") IZ DUAL će vratiti datum `01.01.2010";

IZABERI TO_DATE("01.SIJEČ.2010",`DD.MON.GGGG") IZ DUAL će vratiti datum `01.01.2009";

IZABERI TO_DATE("15-01-10",`DD-MM-GG") IZ DUAL će vratiti datum `01/15/2010'.

Funkcija za pretvaranje niza u numeričku vrijednost TO_NUMBER (niz, format). Najčešće vrijednosti formata navedene su u tablici, pa razmotrimo korištenje ove funkcije pomoću primjera. Primjeri:

IZABERI TO_NUMBER('100") IZ DUAL će vratiti broj 100 SELECT TO_NUMBER(`0010.01", "9999D99") IZ DUAL će vratiti broj 10.01;

IZABERI TO_NUMBER("500.000", "999G999") IZ DUAL će vratiti broj 500000.

RR element u formatu datuma

RR element formata datuma i vremena sličan je elementu formata datuma i vremena YY, ali pruža dodatnu fleksibilnost za pohranjivanje vrijednosti datuma u drugim stoljećima. Element formata datuma i vremena RR omogućuje pohranjivanje datuma iz 20. stoljeća u 21. stoljeće navođenjem samo posljednje dvije znamenke godine.

Ako su zadnje dvije znamenke tekuće godine od 00 do 49, tada vraćena godina ima iste prve dvije znamenke kao i tekuća godina.

Ako su posljednje dvije znamenke tekuće godine između 50 i 99, tada su prve 2 znamenke vraćene godine za 1 veće od prve 2 znamenke tekuće godine.

Ako su posljednje dvije znamenke tekuće godine od 00 do 49, tada su prve 2 znamenke vraćene godine 1 manje od prve 2 znamenke tekuće godine.

Ako su zadnje dvije znamenke tekuće godine između 50 i 99, tada vraćena godina ima iste prve dvije znamenke kao i tekuća godina.

NVL funkcija

Općenito se najčešće koristi funkcija NVL. Funkcija prima dva parametra: NVL(expr1, expr2). Ako prvi parametar expr1 nije NULL, tada funkcija vraća njegovu vrijednost. Ako je prvi parametar NULL, tada funkcija umjesto toga vraća vrijednost drugog parametra exp2.

Primjer: Odaberite NVL (grad_dobavljača, n/a") od dobavljača:

U gornjoj SQL izjavi, vratit će n/" ako polje dobavljač_grad sadrži nultu vrijednost. U suprotnom, vratit će vrijednost dobavljač_grad.

Drugi primjer korištenja NVL funkcije u Oracle/PLSQL je:

odaberite id_dobavljača, NVL (desc_dobavljača, naziv_dobavljača) od dobavljača.

Ova SQL izjava će se vratiti ime dobavljača polje ako dobavljač_desc sadrži nultu vrijednost. Inače će se vratiti dobavljač_desc.

Zadnji primjer: korištenje funkcije NVL u Oracle/PLSQL je: odaberite NVL(provizija, 0) od prodaje;

Ova SQL izjava vratila je vrijednost 0 if provizija polje sadrži nultu vrijednost. Inače bi se vratilo provizije polje.

NVL transformacije za različite tipove podataka

Za pretvaranje nedefinirane vrijednosti u stvarnu vrijednost upotrijebite funkciju NVL: NVL ( izraz1, izraz2), gdje:

izraz1- Izvorna ili izračunata vrijednost, koja može biti nula.

izraz2- Vrijednost koja je zamijenjena za nultu vrijednost.

Bilješka: Funkcija NVL može se koristiti za pretvaranje bilo kojeg tipa podataka, ali rezultat će uvijek biti isti tip kao izraz1.

NVL konverzija za različite vrste:

BROJ-NVL (brojčani stupac, 9).

CHAR ili VARCHAR2 - NVL (znakovi|stupac,"Nedostupno").

Laboratorijski rad. Primjena NVL funkcije

NVL funkcija za rad s null vrijednostima u Oracle SQL-u.

Zadatak:

Napišite upit koji prikazuje podatke o imenima i prezimenima zaposlenika iz tablice hr.employees., kao i visinu provizije (stupac COMMISSION_PCT) za zaposlenika. U tom slučaju, za one zaposlenike za koje provizija nije definirana, potrebno je prikazati vrijednost 0. Rezultat upita trebao bi biti isti kao što je prikazano na sl. 3.5-1.

Riža. 3.5 -1 (vrijednosti prikazane počevši od retka 51)

Odluka:

Odgovarajući kod zahtjeva može izgledati ovako:

SELECT first_name KAO "Ime", last_name Kao "Prezime", NVL (COMMISSION_PCT, 0) Kao "Stopa provizije" FROM hr.employees.

Dotaknuli smo se ugniježđenih funkcija malo ranije, sada ih pogledajmo malo detaljnije. Također ćemo pogledati funkcije za rad s NULL vrijednošću i funkcije koje pomažu implementirati operaciju grananja u upitu.

ugniježđene funkcije

Ugniježđene funkcije koriste povratnu vrijednost jedne funkcije kao ulazni parametar za drugu funkciju. Funkcije uvijek vraćaju samo jednu vrijednost. Stoga rezultat poziva funkcije možete tretirati kao literalnu vrijednost kada ga koristite kao parametar za drugi poziv funkcije. Funkcije reda mogu se ugniježditi do bilo koje razine ugniježđenja. Pojedinačni poziv funkcije izgleda ovako

Funkcija1(parametar1, parametar2, …) = rezultat

Zamjena parametra funkcije pozivom druge funkcije može rezultirati izrazima poput

F1(param1.1, F2(param2.1, param2.2, F3(param3.1)), param1.3)

Ugniježđene funkcije prvo se procjenjuju prije nego što se njihovi rezultati koriste kao ulazne vrijednosti za druge funkcije. Funkcije se procjenjuju od najdublje razine ugniježđivanja do najviše slijeva nadesno. Prethodni izraz se izvodi na sljedeći način

  1. Funkcija F3(param1) se procjenjuje i povratna vrijednost se koristi kao treći parametar za funkciju 2, nazovimo je param2.3
  2. Zatim se procjenjuje funkcija F2(param1, param2.2, param2.3) i vraćena vrijednost se koristi kao drugi parametar funkcije F1 - param1.2
  3. Na kraju se procjenjuje funkcija F1(param1, param2, param1.3) i rezultat se vraća pozivajućem programu.

Dakle, funkcija F3 je na trećoj razini ugniježđenja.

Razmislite o upitu

odaberite next_day(last_day(sysdate)-7, 'uto') iz dual;

  1. Postoje tri funkcije u ovom upitu, od dna prema vrhu - SYSDATE, LAST_DAY, NEXT_DAY. Zahtjev se postavlja ovako
  2. Izvršava se ugniježđena funkcija SYSDATE. Vraća trenutno vrijeme sustava. Recimo da je trenutni datum 28. listopada 2009
  3. Zatim se izračunava rezultat funkcije druge razine LAST_DAY. LAST_DATE('28-OCT-2009') vraća posljednji dan listopada 2009., tj. 31. listopada 2009.
  4. Zatim se od ovog datuma oduzme sedam dana - dobije se 24. listopada.
  5. Konačno, funkcija NEXT_DAY('24-OCT-2009', 'tue') se procjenjuje i upit vraća zadnji utorak u listopadu - što je u našem primjeru 27-OCT-2009.

Prilično je teško razumjeti i izgraditi složene izraze pomoću mnogih ugniježđenih poziva funkcija, ali to dolazi s vremenom i vježbom. Takve izraze možete rastaviti na dijelove i testirati odvojeno. Tablica DUAL vrlo je korisna za testiranje upita i rezultata poziva funkcija. Možete testirati i ispravljati pogreške u malim komponentama, koje se zatim kombiniraju u jedan veliki željeni izraz.

Funkcije grana

Funkcije grananja, također poznate kao IF-THEN-ELSE, koriste se za određivanje putanje izvršenja ovisno o nekim okolnostima. Funkcije grananja vraćaju različite rezultate na temelju rezultata evaluacije uvjeta. U skupini takvih funkcija nalaze se funkcije za rad s NULL vrijednošću: NVL, NVL2, NULLIF i COALESCE. Također i opće funkcije predstavljene funkcijom DECODE i izrazom CASE. Funkcija DECODE je Oracle funkcija, dok je izraz CASE u ANSI SQL standardu.

NVL funkcija

Funkcija NVL provjerava vrijednost stupca ili izraza bilo koje vrste podataka za nultu vrijednost. Ako je vrijednost NULL, vraća alternativnu zadanu vrijednost koja nije NULL, inače se vraća izvorna vrijednost.

Funkcija NVL ima dva potrebna parametra, a sintaksa je NVL(original, ifnull) gdje je original izvorna vrijednost koju treba provjeriti, a ifnull je rezultat koji funkcija vraća ako je original NULL. Tip podataka parametra ifnull i original mora biti kompatibilan. To jest, ili tip podataka mora biti isti ili mora biti moguće implicitno pretvoriti vrijednosti iz jednog tipa u drugi. Funkcija NVL vraća vrijednost iste vrste podataka kao i vrsta podataka izvornog parametra. Razmotrite tri upita

Upit 1: odaberite nvl(1234) iz dual;

Upit 2: odaberite nvl(null, 1234) iz dual;

Upit 3: odaberite nvl(substr('abc', 4), 'Ne postoji podniz') iz dual;

Budući da funkcija NVL zahtijeva dva parametra, upit 1 vratit će pogrešku ORA-00909: nevažeći broj argumenata. Upit 2 vratit će 1234 jer se provjerava NULL i on je NULL. Upit tri koristi ugniježđenu funkciju SUBSTR koja pokušava izdvojiti četvrti znak iz niza od tri znaka, vraća NULL, a funkcija NVL vraća niz "Ne postoji sbustring".

Funkcija NVL vrlo je korisna pri radu s brojevima. Koristi se za pretvaranje NULL vrijednosti u 0 tako da aritmetičke operacije na brojevima ne vraćaju NULL.

NVL funkcija2

Funkcija NVL2 pruža više funkcionalnosti od NVL, ali također obrađuje NULL. Provjerava vrijednost stupca ili izraza bilo koje vrste za nultu vrijednost. Ako vrijednost nije NULL, tada se vraća drugi parametar, inače se vraća treći parametar, za razliku od funkcije NVL koja u ovom slučaju vraća izvornu vrijednost.

Funkcija NVL2 ima tri potrebna parametra, a sintaksa je NVL2(original, ifnotnull, ifnull), gdje je original vrijednost za testiranje, ifnotnull je vrijednost koju treba vratiti ako original nije NULL, a ifnull je vrijednost koju treba vratiti ako je original NULL. Tipovi podataka parametara ifnotnull i ifnull moraju biti kompatibilni i ne mogu biti tipa LONG. Vrsta podataka koju vraća funkcija NVL2 jednaka je vrsti podataka parametra ifnotnull. Pogledajmo nekoliko primjera

Upit 1: odaberite nvl2(1234, 1, 'niz') iz dualnog;

Upit 2: odaberite nvl2(null, 1234, 5678) iz dual;

Upit 3: odaberite nvl2(substr('abc', 2), 'Not bc', 'No substring') from dual;

Parametar ifnotnull u upitu 1 je broj, a parametar ifnotnull je niz. Budući da su tipovi podataka nekompatibilni, vraća se pogreška "ORA-01722: nevažeći broj". Upit dva vraća parametar ifnull jer je original NULL, a rezultat je 5678. Upit tri koristi funkciju SUBSTR koja vraća 'bc' i poziva NVL2('bc','Not bc','No substring') - koja vraća ifnotnull parametar – 'Nije bc'.

NULLIF funkcija

Funkcija NULLIF testira dvije vrijednosti za istu. Ako su isti, vraća se NULL, inače se vraća prvi parametar. Funkcija NULLIF ima dva potrebna parametra, a sintaksa je NULLIF(akojejednako, stavka_usporedbe). Funkcija uspoređuje dva parametra, i ako su identični, vraća NULL, inače parametar ifunequal. Razmotrite zahtjeve

Upit 1: odaberite nullif(1234, 1234) iz dual;

Prvi upit vraća NULL jer su parametri identični. Nizovi u upitu 2 ne pretvaraju se u datum, već se uspoređuju kao nizovi. Budući da su nizovi različitih duljina, vraća se parametar ifunequal 24-JUL-2009.

Na slici 10-4 funkcija NULLIF ugniježđena je unutar funkcije NVL2. Funkcija NULLIF pak koristi funkcije SUBSTR i UPPER kao dio izraza u parametru ifunequal. Stupac EMAIL uspoređuje se s ovim izrazom, koji vraća prvo slovo imena spojeno s prezimenom za zaposlenike čije ime ima 4 znaka. Kada su te vrijednosti jednake, NULLIF će vratiti NULL, inače će vratiti vrijednost parametra ifunequal. Ove se vrijednosti koriste kao parametar za funkciju NVL2. NVL2 pak vraća opis podudaraju li se uspoređeni elementi ili ne.

Slika 10-4 - Korištenje funkcije NULLIF

COALESCE funkcija

Funkcija COALESCE vraća prvu vrijednost koja nije NULL s popisa parametara. Ako su svi parametri NULL, vraća se NULL. Funkcija COALESCE ima dva obavezna parametra i bilo koji broj izbornih parametara, a sintaksa je COALESCE(expr1, expr2, ..., exprn) gdje je rezultat expr1 ako vrijednost izraza 1 nije NULL, inače je rezultat expr2 ako nije NULL, i tako dalje. COALESCE je po značenju jednak ugniježđenim NVL funkcijama

COALESCE(expr1,expr2) = NVL(expr1,expr2)

COALESCE(expr1,expr2,expr3) = NVL(expr1,NVL(expr2,expr3))

Tip podataka vraćene vrijednosti ako je pronađena vrijednost koja nije NULL jednak je tipu podataka prve vrijednosti koja nije NULL. Da biste izbjegli pogrešku 'ORA-00932: nekonzistentni tipovi podataka', svi parametri koji nisu NULL moraju biti kompatibilni s prvim parametrom koji nije NULL. Razmotrite tri primjera

Upit 1: odaberite coalesce(null, null, null, 'niz') iz dual;

Upit 2: odaberite coalesce(null, null, null) iz dual;

Upit 3: odaberite coalesce(substr('abc', 4), 'Not bc', 'No substring') from dual;

Upit 1 vraća četvrti parametar: niz, jer je to prvi parametar koji nije NULL. Drugi upit vraća NULL jer su svi parametri NULL. Upit 3 procjenjuje prvi parametar, dobiva NULL i vraća drugi parametar jer je to prvi parametar koji nije NULL.

Parametri funkcije NVL2 mogu biti zbunjujući ako ste već upoznati s funkcijom NVL. NVL(original, ifnull) vraća original ako vrijednost nije NULL, inače ifnull. NVL2(original, ifnotnull, ifnull) vraća ifnotnull ako original nije null inače ifnull. Zabuna dolazi od činjenice da je drugi parametar funkcije NVL ifnull, dok NVL2 ima ifnotnull. Stoga se nemojte oslanjati na položaj parametra u funkciji.

DECO funkcija

Funkcija DECODE implementira logiku if-then-else provjerom jednakosti prva dva parametra i vraćanjem treće vrijednosti ako su jednaki ili različite vrijednosti ako nisu. Funkcija DECODE ima tri potrebna parametra, a sintaksa je DECODE(expr1, comp1, iftrue1, , ). Ovi se parametri koriste kao što je prikazano u sljedećem primjeru pseudokoda.

IF expr1=comp1 onda vrati iftrue1

Inače, ako izraz1=komp2 onda vrati iftrue2

Inače, ako exprN=compN onda vrati iftrueN

Inače vrati NULL|iffalse;

Prvo se expr1 uspoređuje s comp1. Ako su jednaki, vraća se iftrue1. Ako expr1 nije jednak comp1, ono što će se sljedeće dogoditi ovisi o tome jesu li navedeni parametri comp2 i iftrue2. Ako je dana, tada se vrijednost expr1 uspoređuje s comp2. Ako su vrijednosti jednake, vraća se iftrue2. Ako ne, onda ako postoji compN, iftrueN parovi parametara, expr1 i compN se uspoređuju, a ako je true, iftrueN se vraća ako je jednak. Ako nije pronađeno podudaranje ni u jednom skupu parametara, vraća se iffalse ako je ovaj parametar naveden ili NULL.

Svi parametri u funkciji DECODE mogu biti izrazi. Tip povratne vrijednosti jednak je tipu prvog validatora - parametra comp 1. Izraz ekspr 1 implicitno pretvara u tip podataka parametra comp1. Dostupne su sve ostale opcije komp 1 … kompN također se implicitno pretvaraju u tip comp 1. DECODE tretira NULL vrijednost kao jednaku drugoj NULL vrijednosti, tj. ako je expr1 NULL i comp3 je NULL, a comp2 nije NULL, tada se vraća iftrue3. Pogledajmo nekoliko primjera

Upit 1: odaberite decode(1234, 123, '123 je podudaranje') iz dual;

Upit 2: odaberite decode(1234, 123, '123 is a match', 'No match') iz dual;

Upit 3: odaberite decode('search', 'comp1', 'true1', 'comp2', 'true2', 'search', 'true3', substr('2search', 2, 6), 'true4', ' lažno') od duala;

Upit jedan uspoređuje vrijednost 1234 i 123. Budući da nisu jednake, iftrue1 se zanemaruje, a budući da iffalse nije definiran, vraća se NULL. Upit dva identičan je upitu 1 osim što je definirana vrijednost iffalse. Budući da 1234 nije jednako 123, iffalse - vraća se 'Nema podudaranja'. Upit tri provjerava vrijednosti parametara u odnosu na vrijednost pretraživanja. Parametri comp1 i comp2 nisu jednaki 'search' pa se rezultati iftrue1 i iftrue2 preskaču. Podudaranje je pronađeno u trećoj operaciji usporedbe elementa comp3 (pozicija parametra 6), a povratna vrijednost iftrue3 (parametar 7) je 'true3'. Budući da je pronađeno podudaranje, više se ne rade izračuni. To jest, unatoč činjenici da se vrijednost comp4 (parametar 8) također podudara s expr1, ovaj se izraz nikada ne procjenjuje jer je podudaranje pronađeno u prethodnoj usporedbi.

CASE izraz

Svi programski jezici trećeg i četvrta generacija implementirati konstrukciju slučaja. Poput funkcije DECODE, izraz CASE omogućuje implementaciju if-then-else logike. Postoje dvije opcije za korištenje izraza CASE. Jednostavna izjava CASE postavlja izvorni element za usporedbu jednom, a zatim navodi sve potrebne uvjete ispitivanja. Složeni (pretraživani) CASE procjenjuje obje izjave za svaki uvjet.

CASE izraz ima tri potrebna parametra. Sintaksa izraza ovisi o vrsti. Za jednostavan CASE izraz to izgleda ovako

CASE search_expr

WHEN usporedba_izraz1 THEN iftrue1

}