Pretvorbe NVL za različne vrste podatkov. Stavki veje v opisu ukaza SELECT Oracle nvl

Malo prej smo se dotaknili ugnezdenih funkcij, zdaj pa si jih bomo ogledali nekoliko podrobneje. Upoštevali bomo tudi funkcije za delo z vrednostjo NULL in funkcije, ki pomagajo implementirati operacijo razvejanja v poizvedbi.

Ugnezdene funkcije

Ugnezdene funkcije uporabljajo vrnjeno vrednost ene funkcije kot vhodni parameter za drugo funkcijo. Funkcije vedno vrnejo samo eno vrednost. Zato lahko rezultat klica funkcije obravnavate kot literal vrednosti, ko ga uporabite kot parameter za klic druge funkcije. Funkcije nizov je mogoče ugnezditi na kateri koli ravni ugnezdenja. En klic funkcije izgleda takole

Funkcija1(parameter1, parameter2, …) = rezultat

Zamenjava parametra funkcije s klicem druge funkcije lahko povzroči izraze, kot je

F1(parameter1.1, F2(parameter2.1, parameter2.2, F3(parameter3.1)), parameter1.3)

Ugnezdene funkcije se najprej ovrednotijo, preden se njihovi rezultati uporabijo kot vhodne vrednosti za druge funkcije. Funkcije se ocenjujejo od najgloblje ravni gnezdenja do zgornje od leve proti desni. Prejšnji izraz se izvede na naslednji način

  1. Funkcija F3(param1) je ovrednotena in vrnjena vrednost se uporabi kot tretji parameter za funkcijo 2, imenujemo jo param2.3
  2. Nato se ovrednoti funkcija F2(param1, param2.2, param2.3) in vrnjena vrednost se uporabi kot drugi parameter funkcije F1 - param1.2
  3. Nazadnje se ovrednoti funkcija F1(param1, param2, param1.3) in rezultat se vrne klicnemu programu.

Tako je funkcija F3 na tretji ravni gnezdenja.

Razmislimo o zahtevi

izberite next_day(last_day(sysdate)-7, 'tor') iz dual;

  1. V tej poizvedbi so tri funkcije, od nižje do višje ravni - SYSDATE, LAST_DAY, NEXT_DAY. Zahteva se izvede na naslednji način
  2. Izvede se ugnezdena funkcija SYSDATE. Vrne trenutni sistemski čas. Recimo, da je trenutni datum 28. oktober 2009
  3. Nato se izračuna rezultat funkcije druge ravni LAST_DAY. LAST_DATE('28-OCT-2009') vrne zadnji dan oktobra 2009, to je 31. oktober 2009.
  4. Nato se od tega datuma odšteje sedem dni - izkaže se 24. oktober.
  5. Na koncu je ovrednotena funkcija NEXT_DAY('24-OCT-2009', 'tue') in poizvedba vrne zadnji torek v oktobru – kar je v našem primeru 27-OCT-2009.

Precej težko je razumeti in graditi kompleksne izraze z uporabo številnih ugnezdenih funkcijskih klicev, vendar to pride s časom in prakso. Takšne izraze lahko razdelite na dele in jih preizkusite ločeno. Tabela DUAL je zelo uporabna za testiranje poizvedb in rezultatov funkcijskih klicev. Preizkušate in odpravljate lahko majhne komponente, ki so nato združene v en velik želeni izraz.

Razvejane funkcije

Funkcije razvejanja, znane tudi kot IF-THEN-ELSE, se uporabljajo za določanje poti izvajanja glede na nekatere okoliščine. Funkcije razvejanja vrnejo različne rezultate glede na rezultat ocene stanja. Skupina takih funkcij vključuje funkcije za delo z vrednostjo NULL: NVL, NVL2, NULLIF in COALESCE. In tudi skupne funkcije, ki jih predstavljata funkcija DECODE in izraz CASE. Funkcija DECODE je funkcija Oracle, medtem ko je izraz CASE prisoten v standardu ANSI SQL.

funkcija NVL

Funkcija NVL preizkusi vrednost stolpca ali izraza katerega koli podatkovnega tipa glede na NULL. Če je vrednost NULL, vrne alternativno privzeto vrednost, ki ni NULL, sicer vrne izvirno vrednost.

Funkcija NVL ima dva obvezna parametra in sintaksa je NVL(original, ifnull), kjer je original izvirna vrednost, ki jo je treba preveriti, ifnull pa je rezultat, ki ga vrne funkcija, če je izvirna vrednost NULL. Podatkovni tip parametrov ifnull in original morata biti združljiv. To pomeni, da mora biti tip podatkov enak ali pa mora biti mogoče implicitno pretvoriti vrednosti iz enega tipa v drugega. Funkcija NVL vrne vrednost istega podatkovnega tipa kot podatkovni tip izvirnega parametra. Razmislimo o treh poizvedbah

Poizvedba 1: izberite nvl(1234) iz dual;

Poizvedba 2: izberite nvl(null, 1234) iz dual;

Poizvedba 3: izberite nvl(substr('abc', 4), 'Noben podniz ne obstaja') iz dual;

Ker funkcija NVL zahteva dva parametra, bo zahteva 1 vrnila napako ORA-00909: neveljavno število argumentov. Poizvedba 2 bo vrnila 1234, ker je vrednost NULL preverjena in je NULL. Tretja poizvedba uporablja ugnezdeno funkcijo SUBSTR, ki poskuša izvleči četrti znak iz niza, dolgega tri znake, in vrne NULL, funkcija NVL pa vrne niz »No sbustring exists«.

Funkcija NVL je zelo uporabna pri delu s številkami. Uporablja se za pretvorbo vrednosti NULL v 0, tako da aritmetične operacije na številkah ne vrnejo NULL

funkcija NVL2

Funkcija NVL2 zagotavlja več funkcionalnosti kot NVL, vendar služi tudi za obdelavo vrednosti NULL. Preizkuša vrednost stolpca ali izraza katere koli vrste glede na NULL. Če vrednost ni NULL, je vrnjen drugi parameter, sicer pa tretji parameter, za razliko od funkcije NVL, ki v tem primeru vrne prvotno vrednost.

Funkcija NVL2 ima tri obvezne parametre in sintaksa je NVL2(original, ifnotnull, ifnull), kjer je original vrednost, ki se testira, ifnotnull je vrnjena vrednost, če original ni NULL, in ifnull je vrnjena vrednost, če je original NULL. Tipa podatkov parametrov ifnotnull in ifnull morata biti združljiva in ne moreta biti tipa LONG. Podatkovni tip, ki ga vrne funkcija NVL2, je enak podatkovnemu tipu parametra ifnotnull. Poglejmo si nekaj primerov

Poizvedba 1: izberite nvl2(1234, 1, 'niz') iz dual;

Poizvedba 2: izberite nvl2(null, 1234, 5678) iz dual;

Poizvedba 3: izberite nvl2(substr('abc', 2), 'Ni bc', 'Brez podniza') iz dual;

Parameter ifnotnull v zahtevi 1 je število, parameter ifnotnull pa je niz. Ker tipi podatkov niso združljivi, je vrnjena napaka »ORA-01722: neveljavna številka«. Poizvedba 2 vrne parameter ifnull, ker je original NULL in bo rezultat 5678. Poizvedba 3 uporablja funkcijo SUBSTR, ki vrne 'bc' in pokliče NVL2('bc','Not bc','No substring') – ki vrne parameter ifnotnull – 'Ni bc'.

Funkcija NULLIF

Funkcija NULLIF preveri, ali sta dve vrednosti enaki. Če sta enaka, je vrnjena vrednost NULL, sicer je vrnjen prvi parameter. Funkcija NULLIF ima dva obvezna parametra, sintaksa pa je NULLIF(čejeenako, primerjava_item). Funkcija primerja dva parametra in če sta enaka, vrne NULL, sicer je parameter ifunequal. Upoštevajmo zahteve

Poizvedba 1: izberite nullif(1234, 1234) iz dual;

Prva poizvedba vrne NULL, ker so parametri enaki. Nizi v poizvedbi 2 niso pretvorjeni v datum, temveč primerjani kot nizi. Ker so nizi različnih dolžin, je parameter ifunequal vrnjen 24-JUL-2009.

Na sliki 10-4 je funkcija NULLIF ugnezdena znotraj funkcije NVL2. Funkcija NULLIF pa uporablja funkciji SUBSTR in UPPER kot del izraza v parametru ifunequal. Stolpec EMAIL se primerja s tem izrazom, ki vrne prvo črko imena skupaj s priimkom za zaposlene, katerih ime je dolgo 4 znake. Ko sta ti vrednosti enaki, bo NULLIF vrnil NULL, sicer bo vrnil vrednost parametra ifunequal. Te vrednosti se uporabljajo kot parameter za funkcijo NVL2. NVL2 nato vrne opis, ali se primerjani elementi ujemajo ali ne.

Slika 10-4 – Uporaba funkcije NULLIF

Funkcija COALESCE

Funkcija COALESCE vrne prvo vrednost, ki ni NULL, s seznama parametrov. Če so vsi parametri NULL, je vrnjena NULL. Funkcija COALESCE ima dva obvezna parametra in poljubno število neobveznih parametrov, sintaksa pa je COALESCE(expr1, expr2, ..., exprn), kjer bo rezultat expr1, če vrednost expr 1 ni NULL, sicer bo rezultat izraz2, če ni NULL itd. COALESCE je po pomenu enak ugnezdenim funkcijam NVL

COALESCE(izraz1, izraz2) = NVL(izraz1, izraz2)

COALESCE(izraz1, izraz2, izraz3) = NVL(izraz1,NVL(izraz2, izraz3))

Podatkovni tip vrnjene vrednosti, če je najdena vrednost, ki ni NULL, je enak podatkovnemu tipu prve vrednosti, ki ni NULL. Da bi se izognili napaki 'ORA-00932: nedosledni tipi podatkov', morajo biti vsi parametri, ki niso NULL, združljivi s prvim parametrom, ki ni NULL. Poglejmo tri primere

Poizvedba 1: izberite coalesce(null, null, null, 'niz') iz dual;

Poizvedba 2: izberite coalesce(null, null, null) iz dual;

Poizvedba 3: izberite coalesce(substr('abc', 4), 'Not bc', 'Brez podniza') iz dual;

Poizvedba 1 vrne četrti parameter: niz, ker je prvi parameter, ki ni NULL. Druga poizvedba vrne NULL, ker so vsi parametri NULL. Poizvedba 3 ovrednoti prvi parameter, dobi vrednost NULL in vrne drugi parameter, ker je prvi parameter, ki ni NULL.

Parametri funkcije NVL2 so lahko zmedeni, če ste že seznanjeni s funkcijo NVL. NVL(original, ifnull) vrne original, če vrednost ni NULL, sicer ifnull. NVL2(original, ifnotnull, ifnull) vrne ifnotnull, če original ni NULL, sicer ifnull. Zmeda izhaja iz dejstva, da je drugi parameter funkcije NVL ifnull, medtem ko je za NVL2 ifnotnull. Zato se ne zanašajte na položaj parametra v funkciji.

DECODE funkcijo

Funkcija DECODE izvaja logiko if-then-else tako, da preizkusi enakost prvih dveh parametrov in vrne tretjo vrednost, če sta enaka, ali drugo vrednost, če nista enaka. Funkcija DECODE ima tri obvezne parametre, sintaksa pa je DECODE(expr1, comp1, iftrue1, , ). Ti parametri se uporabljajo, kot je prikazano v naslednjem primeru psevdokoda

IF expr1=comp1 nato vrni iftrue1

Drugače, če izraz1=comp2 vrne iftrue2

Drugače, če izrazN=compN vrne iftrueN

Drugače vrni NULL|iffalse;

Najprej se expr1 primerja s comp1. Če sta enaka, se vrne iftrue1. Če izraz1 ni enak komp1, je potem, kaj se zgodi naprej, odvisno od tega, ali sta podana parametra comp2 in iftrue2. Če je podana, se vrednost expr1 primerja z comp2. Če sta vrednosti enaki, se vrne iftrue2. Če ni, potem če obstajajo pari parametrov compN, se iftrueN, expr1 in compN primerjajo in, če so enaki, se vrne iftrueN. Če v nobenem naboru parametrov ni bilo ujemanja, se vrne vrednost iffalse, če je bil ta parameter podan, ali vrednost NULL.

Vsi parametri v funkciji DECODE so lahko izrazi. Tip vrnjene vrednosti je enak tipu prvega potrditvenega elementa - parametra comp 1. Izraz ekspr 1 se implicitno pretvori v podatkovni tip parametra comp1. Vsi drugi razpoložljivi parametri komp 1...kompN se tudi implicitno pretvorijo v tip comp 1. DECODE obravnava vrednost NULL kot enako drugi vrednosti NULL, tj. če je expr1 NULL in comp3 je NULL in comp2 ni NULL, potem je vrnjeno iftrue3. Poglejmo si nekaj primerov

Poizvedba 1: izberite decode(1234, 123, '123 is a match') iz dual;

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

Poizvedba 3: izberite decode('search', 'comp1', 'true1', 'comp2', 'true2', 'search', 'true3', substr('2search', 2, 6), 'true4', ' false') iz dvojine;

Poizvedba ena primerja vrednosti 1234 in 123. Ker nista enaki, je iftrue1 prezrt in ker vrednost iffalse ni definirana, je vrnjena NULL. Zahteva 2 je enaka zahtevi 1, le da je definirana vrednost iffalse. Ker 1234 ni enako 123, vrne iffalse – »Ni ujemanja«. Tretja poizvedba preveri, ali se vrednosti parametrov ujemajo z iskalno vrednostjo. Parametra comp1 in comp2 nista enaka 'search', zato sta rezultata iftrue1 in iftrue2 preskočena. Ujemanje je najdeno v tretji primerjalni operaciji elementa comp3 (položaj parametra 6) in vrnjena je vrednost iftrue3 (parameter 7), ki je enaka 'true3'. Ker je ujemanje najdeno, se izračuni ne izvedejo več. To pomeni, da se kljub dejstvu, da se vrednost comp4 (parameter 8) ujema tudi z expr1, ta izraz nikoli ne izračuna, saj je bilo ujemanje najdeno v prejšnji primerjavi.

CASE izraz

Vsi programski jeziki tretje in četrte generacije izvajajo konstrukcijo primera. Tako kot funkcija DECODE tudi izraz CASE omogoča implementacijo logike if-then-else. Obstajata dve možnosti za uporabo izraza CASE. Preprost izraz CASE nastavi izvorni element za enkratno primerjavo in nato navede vse potrebne testne pogoje. Kompleksni (iskani) CASE ovrednoti oba stavka za vsak pogoj.

Izraz CASE ima tri zahtevane parametre. Sintaksa izraza je odvisna od vrste. Za preprost izraz CASE je videti takole

CASE search_expr

WHEN primerjalni_izraz1 THEN iftrue1

)

Funkcija TRUNC vrne število n, prirezano na m decimalnih mest. Parameter m morda ni določen; v tem primeru je n prirezan na celo število.

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

TRUNC(100.25678, 2) X4

OD DUAL

Funkcija SIGN(n)

Funkcija SIGN določa predznak števila. Če je n pozitiven, potem funkcija vrne 1. Če je n negativen, vrne -1. Če je enako nič, se vrne 0. Na primer:

IZBERI SIGN(100,22) X1, SIGN(-100,22) X2, SIGN(0) X3

OD DUAL

Zanimiva značilnost te funkcije je zmožnost oddajanja m enakega nič, ne da bi prišlo do napake pri deljenju z 0.

Funkcija POWER(n, m)

Funkcija POWER dvigne število n na potenco m. Stopnja je lahko delna in negativna, kar bistveno razširi zmožnosti te funkcije.

IZBERI MOČ (10, 2) X1, MOČ (100, 1/2) X2,

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

OD DUAL

X1 X2 X3 X4
100 10 10 0,1

V nekaterih primerih lahko pride do izjeme pri klicu te funkcije. Na primer:

IZBERI MOČ (-100, 1/2) X2

OD DUAL

V tem primeru se poskusi izračunati kvadratni koren negativnega števila, kar bo povzročilo napako ORA-01428 »Argument izven obsega«.

Funkcija SQRT(n)

Ta funkcija vrne kvadratni koren iz n. Na primer:

IZBERI SQRT(100) X

OD DUAL

Funkciji EXP(n) in LN(n).

Funkcija EXP dvigne e na potenco n, funkcija LN pa izračuna naravni logaritem n (n mora biti večji od nič). primer:

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

funkcija NVL

Funkcija NVL se običajno uporablja najpogosteje. Funkcija prejme dva parametra: NVL(izraz1, izraz2). Če prvi parameter expr1 ni NULL, potem funkcija vrne njegovo vrednost. Če je prvi parameter NULL, potem funkcija namesto tega vrne vrednost drugega parametra expr2.

Poglejmo praktičen primer. Polje COMM v tabeli EMP lahko vsebuje vrednosti NULL. Pri izvajanju poizvedbe, kot je:

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

OD SCOTT.EMP

vrednost NULL bo zamenjana z ničlo. Ko je vrednost ustvarjena s funkcijo, ji je dodeljen vzdevek. Rezultati poizvedbe bodo videti tako:

EMPNO ENAME COMM NVL_COMM
7369 SMITH 0
7499 ALLEN 300 300
7521 ODDELEK 500 500
7566 JONES 0
7654 MARTIN 1400 1400
7698 BLAKE 0
7782 CLARK 0
7839 KRALJ 0
7844 TURNER 0 0
7900 JAMES 0
7902 FORD 0
7934 MILLER 0

Funkcija CEIL(n)

Funkcija CEIL vrne najmanjše celo število, večje ali enako številu n, posredovanemu kot parameter. Na primer:

IZBERI CEIL(100) X1, CEIL(-100) X2, CEIL(100,2) X3, CEIL(-100,2) X4

OD DUAL

Funkcija TRUNC(n [,m])

Funkcija TRUNC vrne število n, prirezano na m decimalnih mest. Parameter m morda ni določen; v tem primeru je n prirezan na celo število.

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

TRUNC(100.25678, 2) X4

OD DUAL

Funkcija SIGN(n)

Funkcija SIGN določa predznak števila. Če je n pozitiven, potem funkcija vrne 1. Če je n negativen, vrne -1. Če je enako nič, se vrne 0. Na primer:

IZBERI SIGN(100,22) X1, SIGN(-100,22) X2, SIGN(0) X3

OD DUAL

Zanimiva značilnost te funkcije je zmožnost oddajanja m enakega nič, ne da bi prišlo do napake pri deljenju z 0.

Funkcija POWER(n, m)

Funkcija POWER dvigne število n na potenco m. Stopnja je lahko delna in negativna, kar bistveno razširi zmožnosti te funkcije.

IZBERI MOČ (10, 2) X1, MOČ (100, 1/2) X2,

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

OD DUAL

X1 X2 X3 X4
100 10 10 0,1

V nekaterih primerih lahko pride do izjeme pri klicu te funkcije. Na primer:

IZBERI MOČ (-100, 1/2) X2

OD DUAL

V tem primeru se poskusi izračunati kvadratni koren negativnega števila, kar bo povzročilo napako ORA-01428 »Argument izven obsega«.

Funkcija SQRT(n)

Ta funkcija vrne kvadratni koren števila n. Na primer:

IZBERI SQRT(100) X

OD DUAL

Funkciji EXP(n) in LN(n).

Funkcija EXP dvigne e na potenco n, funkcija LN pa izračuna naravni logaritem n (n mora biti večji od nič). primer:

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

Funkcija TO_CHAR s številkami

Funkcije za pretvorbo podatkov v druge vrste podatkov. TO_CHAR(število) pretvori število v besedilo. TO_NUMBER(niz) pretvori besedilo v število.

SELECT TO_CHAR (123) FROM DUAL vrne niz 123, SELECT TO_NUMBER (`12345") FROM DUAL vrne številko 12345.

Laboratorijsko delo. Spreminjanje zapisa izhodnega števila

Spremembe v formatu številskih vrednosti v Oracle SQL, funkcija TO_CHAR za delo s številskimi vrednostmi.

Vaja:

Napišite poizvedbo, ki bi prikazala podatke o imenu, priimku in plači zaposlenih iz tabele hr.employees v obliki prikazani na sl. 3.4-1:

riž. 3.4 -1

V tem primeru naj bodo podatki razvrščeni tako, da se najprej izpišejo vrstice za zaposlene z najvišjo plačo.

Opomba:

Nekatere vrednosti plač na sl. 3.4-1 so bili spremenjeni, zato morda niso enaki vašim vrednostim.

rešitev:

SELECT first_name AS "First Name", last_name Kot "Last Name", TO_CHAR (SALARY, "L999999999.99") Kot "Salary" FROM hr.employees ORDER BY SALARY DESC.

Funkciji TO_NUMBER in TO_DATE

Funkcija za pretvorbo niza v datum TO_DATE (niz, oblika). Možne vrednosti formata so bile že obravnavane zgoraj, zato bom dal več primerov uporabe te funkcije. Primeri:

IZBERI TO_DATE("01/01/2010", `DD.MM.LLLL") OD DUAL bo vrnil datum `01/01/2010";

IZBERI TO_DATE("01.JAN.2010", `DD.MON.LLLL") OD DUAL bo vrnil datum `01/01/2009";

IZBERI TO_DATE("15-01-10", `DD-MM-LL") OD DUAL bo vrnil datum `01/15/2010`.

Funkcija za pretvorbo niza v številsko vrednost TO_NUMBER (niz, oblika). Najpogostejše vrednosti formata so navedene v tabeli, zato si oglejmo uporabo te funkcije na primerih. Primeri:

IZBERI TO_NUMBER('100") OD DUAL bo vrnil številko 100 SELECT TO_NUMBER (`0010.01", "9999D99") OD DUAL bo vrnil število 10,01;

IZBERI TO_NUMBER("500.000", "999G999") OD DUAL bo vrnil število 500000.

Element RR v formatu datuma

Element zapisa datuma in časa RR je podoben elementu zapisa datuma in časa YY, vendar zagotavlja dodatno prilagodljivost za shranjevanje datumskih vrednosti v drugih stoletjih. Element zapisa datuma in časa RR omogoča shranjevanje datumov iz 20. stoletja v 21. stoletje, tako da navede samo zadnji dve števki leta.

Če sta zadnji dve števki tekočega leta od 00 do 49, ima vrnjeno leto enaki prvi dve števki kot tekoče leto.

Če sta zadnji dve števki tekočega leta od 50 do 99, sta prvi 2 števki vrnjenega leta za 1 večji od prvih 2 števk tekočega leta.

Če sta zadnji dve števki tekočega leta od 00 do 49, sta prvi 2 števki vrnjenega leta za 1 manjši od prvih 2 števk tekočega leta.

Če sta zadnji dve števki tekočega leta od 50 do 99, ima vrnjeno leto isti prvi dve števki kot tekoče leto.

funkcija NVL

Funkcija NVL se običajno uporablja najpogosteje. Funkcija prejme dva parametra: NVL (expr1, expr2). Če prvi parameter expr1 ni NULL, potem funkcija vrne njegovo vrednost. Če je prvi parameter NULL, potem funkcija namesto tega vrne vrednost drugega parametra expr2.

Primer: Izberite NVL (supplier_city, n/a") med dobavitelji:

Zgornji stavek SQL bo vrnil n/", če polje dobaviteljsko_mesto vsebuje ničelno vrednost. V nasprotnem primeru bo vrnilo vrednost dobaviteljsko_mesto.

Drug primer uporabe funkcije NVL v Oracle/PLSQL je:

izberite id_dobavitelja, NVL (desc_dobavitelja, ime_dobavitelja) od dobaviteljev.

Ta stavek SQL se bo vrnil ime dobavitelja polje če dobavitelj_desc vsebuje ničelno vrednost. Sicer se bo vrnilo dobavitelj_desc.

Zadnji primer: Uporaba funkcije NVL v Oracle/PLSQL je: izberite NVL(provizija, 0) od prodaje;

Ta stavek SQL je vrnil vrednost 0 if provizija Polje vsebuje ničelno vrednost. V nasprotnem primeru bi bilo vrnjeno provizije polje.

Pretvorbe NVL za različne vrste podatkov

Če želite pretvoriti ničelno vrednost v dejansko vrednost, uporabite funkcijo NVL: NVL ( izraz1, izraz2), Kje:

izraz1- Prvotna ali izračunana vrednost, ki je lahko nedefinirana.

izraz2- Vrednost, ki je nadomeščena z nedefinirano vrednostjo.

Opomba: Funkcijo NVL lahko uporabite za pretvorbo katere koli vrste podatkov, vendar bo rezultat vedno iste vrste kot izraz1.

Pretvorba NVL za različne vrste:

ŠTEVILKA - NVL (številčni stolpec, 9).

CHAR ali VARCHAR2 - NVL (znaki|stolpec,"Ni na voljo").

Laboratorijsko delo. Uporaba funkcije NVL

Funkcija NVL za delo z ničelnimi vrednostmi v Oracle SQL.

Vaja:

Napišite poizvedbo, ki prikaže podatke o imenu in priimku zaposlenega iz tabele hr.employees., kot tudi stopnjo provizije (stolpec COMMISSION_PCT) za zaposlenega. V tem primeru mora biti za tiste zaposlene, za katere provizija ni določena, prikazana vrednost 0. Rezultat zahteve naj bo tak, kot je prikazano na sl. 3,5-1.

riž. 3.5 -1 (prikazane vrednosti od vrstice 51)

rešitev:

Ustrezna koda zahteve je lahko takšna:

IZBERITE first_name KOT "Ime", last_name Kot "Priimek", NVL (COMMISSION_PCT, 0) Kot "Stopnja provizije" FROM hr.employees.




Vrh