NVL transformācijas dažādiem datu tipiem. Filiāles priekšraksti komandas SELECT Oracle nvl aprakstā

Nedaudz agrāk pieskārāmies ligzdotajām funkcijām, tagad apskatīsim tās nedaudz sīkāk. Apskatīsim arī funkcijas darbam ar NULL vērtību un funkcijas, kas palīdz vaicājumā ieviest sazarošanas darbību.

ligzdotas funkcijas

Ligzdotas funkcijas izmanto vienas funkcijas atgriešanās vērtību kā citas funkcijas ievades parametru. Funkcijas vienmēr atgriež tikai vienu vērtību. Tāpēc funkcijas izsaukšanas rezultātu var uzskatīt par burtisku vērtību, ja to izmantojat kā parametru citam funkcijas izsaukumam. Rindas funkcijas var ligzdot līdz jebkuram ligzdošanas līmenim. Vienas funkcijas izsaukums izskatās šādi

Funkcija1(parametrs1, parametrs2, …) = rezultāts

Funkcijas parametra aizstāšana ar citas funkcijas izsaukumu var izraisīt tādas izteiksmes kā

F1(parametrs 1.1, F2(param2.1, 2.2, F3(param3.1)), parametrs 1.3)

Ligzdotas funkcijas vispirms tiek novērtētas, pirms to rezultāti tiek izmantoti kā ievades vērtības citām funkcijām. Funkcijas tiek novērtētas no dziļākā ligzdošanas līmeņa līdz augšējam no kreisās puses uz labo. Iepriekšējā izteiksme tiek izpildīta šādi

  1. Tiek novērtēta funkcija F3(param1) un atgriešanas vērtība tiek izmantota kā trešais funkcijas 2 parametrs, sauksim to param2.3
  2. Pēc tam tiek novērtēta funkcija F2(param1, param2.2, param2.3) un atgrieztā vērtība tiek izmantota kā otrais funkcijas F1 parametrs - param1.2
  3. Visbeidzot tiek novērtēta funkcija F1(param1, param2, param1.3) un rezultāts tiek atgriezts izsaucējai programmai.

Tādējādi funkcija F3 atrodas trešajā ligzdošanas līmenī.

Apsveriet vaicājumu

atlasiet next_day(last_day(sysdate)-7, 'otrdiena') no dual;

  1. Šajā vaicājumā ir trīs funkcijas, sākot no apakšas uz augšu - SYSDATE, LAST_DAY, NEXT_DAY. Pieprasījums tiek izteikts šādi
  2. Tiek izpildīta ligzdotā funkcija SYSDATE. Tas atgriež pašreizējo sistēmas laiku. Pieņemsim, ka pašreizējais datums ir 2009. gada 28. oktobris
  3. Tālāk tiek aprēķināts otrā līmeņa funkcijas LAST_DAY rezultāts. LAST_DATE('28-OCT-2009') atgriež 2009. gada oktobra pēdējo dienu, t.i., 2009. gada 31. oktobri.
  4. Tad no šī datuma tiek atņemtas septiņas dienas – tiek iegūts 24.oktobris.
  5. Visbeidzot tiek novērtēta funkcija NEXT_DAY('24-OCT-2009', 'tue'), un vaicājums atgriež oktobra pēdējo otrdienu, kas mūsu piemērā ir 2009. gada 27. oktobris.

Ir diezgan grūti saprast un izveidot sarežģītas izteiksmes, izmantojot daudzus ligzdotu funkciju izsaukumus, taču tas nāk ar laiku un praksi. Jūs varat sadalīt šādas izteiksmes daļās un pārbaudīt atsevišķi. DUAL tabula ir ļoti noderīga, lai pārbaudītu vaicājumus un funkciju izsaukumu rezultātus. Varat pārbaudīt un atkļūdot mazos komponentus, kas pēc tam tiek apvienoti vienā lielā vēlamajā izteiksmē.

Filiāles funkcijas

Sazarojuma funkcijas, kas pazīstamas arī kā IF-THEN-ELSE, tiek izmantotas, lai noteiktu izpildes ceļu atkarībā no dažiem apstākļiem. Filiāles funkcijas atgriež dažādus rezultātus, pamatojoties uz stāvokļa novērtēšanas rezultātu. Šādu funkciju grupā ir funkcijas darbam ar NULL vērtību: NVL, NVL2, NULLIF un COALESCE. Un arī vispārīgās funkcijas, ko attēlo funkcija DECODE un CASE izteiksme. Funkcija DECODE ir Oracle funkcija, savukārt CASE izteiksme ir ANSI SQL standartā.

NVL funkcija

Funkcija NVL pārbauda jebkura datu tipa kolonnas vai izteiksmes vērtību nulles vērtībai. Ja vērtība ir NULL, tā atgriež alternatīvu noklusējuma vērtību, kas nav NULL, pretējā gadījumā tiek atgriezta sākotnējā vērtība.

Funkcijai NVL ir divi obligātie parametri, un sintakse ir NVL(original, ifnull), kur oriģināls ir sākotnējā vērtība, kas jāpārbauda, ​​un ifnull ir funkcijas atgrieztais rezultāts, ja oriģināls ir NULL. Ifnull un oriģinālā parametra datu tipam ir jābūt saderīgam. Tas ir, vai nu datu tipam ir jābūt vienādam, vai arī jābūt iespējai netieši konvertēt vērtības no viena veida uz citu. Funkcija NVL atgriež tāda paša datu tipa vērtību kā sākotnējā parametra datu tips. Apsveriet trīs jautājumus

1. vaicājums: atlasiet nvl(1234) no dual;

2. vaicājums: atlasiet nvl(null, 1234) no dual;

3. vaicājums: atlasiet nvl(substr('abc', 4), 'Apakšvirkne nepastāv') no dual;

Tā kā funkcijai NVL ir nepieciešami divi parametri, 1. vaicājums atgriezīs kļūdu ORA-00909: nederīgs argumentu skaits. 2. vaicājums atgriezīs 1234, jo tiek pārbaudīts NULL un tas ir NULL. Trešajā vaicājumā tiek izmantota ligzdota funkcija SUBSTR, kas mēģina izvilkt ceturto rakstzīmi no trīs rakstzīmju virknes, atgriež NULL, bet funkcija NVL atgriež virkni "Substring nepastāv".

NVL funkcija ir ļoti noderīga, strādājot ar cipariem. To izmanto, lai pārvērstu NULL vērtības uz 0, lai aritmētiskās darbības ar skaitļiem neatgrieztu NULL.

NVL funkcija2

Funkcija NVL2 nodrošina vairāk funkcionalitātes nekā NVL, taču apstrādā arī NULL. Tas pārbauda jebkura veida kolonnas vai izteiksmes vērtību nulles vērtībai. Ja vērtība nav NULL, tad tiek atgriezts otrais parametrs, pretējā gadījumā tiek atgriezts trešais parametrs, atšķirībā no funkcijas NVL, kas šajā gadījumā atgriež sākotnējo vērtību.

Funkcijai NVL2 ir trīs obligātie parametri, un sintakse ir NVL2 (original, ifnotnull, ifnull), kur oriģināls ir pārbaudāmā vērtība, ifnotnull ir vērtība, kas jāatgriež, ja oriģināls nav NULL, un ifnull ir vērtība, kas jāatgriež, ja oriģināls ir. NULL. Parametru ifnotnull un ifnull datu tipiem ir jābūt saderīgiem, un tie nedrīkst būt LONG tipa. Datu tips, ko atgriež funkcija NVL2, ir vienāds ar parametra ifnotnull datu tipu. Apskatīsim dažus piemērus

1. vaicājums: atlasiet nvl2(1234, 1, 'virkne') no dual;

2. vaicājums: atlasiet nvl2(null, 1234, 5678) no dual;

3. vaicājums: atlasiet nvl2(substr('abc', 2), 'Not bc', 'Nav apakšvirknes') no dual;

Parametrs ifnotnull 1. vaicājumā ir skaitlis, bet parametrs ifnull ir virkne. Tā kā datu tipi nav saderīgi, tiek atgriezta kļūda “ORA-01722: nederīgs numurs”. Otrais vaicājums atgriež parametru ifnull, jo oriģināls ir NULL un rezultāts ir 5678. Trešajā vaicājumā tiek izmantota funkcija SUBSTR, kas atgriež "bc" un izsauc NVL2 ('bc', "Not bc", "Nav apakšvirknes"), kas atgriež ifnotnull. parametrs - 'Nav bc'.

NULLIF funkcija

Funkcija NULLIF pārbauda divas viena un tā paša vērtības. Ja tie ir vienādi, tiek atgriezta NULL, pretējā gadījumā tiek atgriezts pirmais parametrs. Funkcijai NULLIF ir divi obligātie parametri, un sintakse ir NULLIF(ifunequal, salīdzinājuma_vienums). Funkcija salīdzina divus parametrus, un, ja tie ir identiski, tā atgriež NULL, pretējā gadījumā parametru ifunequal. Apsveriet jautājumus

1. vaicājums: atlasiet nullif(1234, 1234) no dual;

Pirmais vaicājums atgriež NULL, jo parametri ir identiski. 2. vaicājuma virknes netiek pārveidotas par datumu, bet tiek salīdzinātas kā virknes. Tā kā virknes ir dažāda garuma, tiek atgriezts parametrs ifunequal 24-JUL-2009.

10-4. attēlā funkcija NULLIF ir ligzdota funkcijā NVL2. Funkcija NULLIF savukārt izmanto funkcijas SUBSTR un UPPER kā daļu no izteiksmes parametrā ifunequal. Kolonna EMAIL tiek salīdzināta ar šo izteiksmi, kas atgriež vārda pirmo burtu, kas savienots ar uzvārdu darbiniekiem, kuru vārds ir 4 rakstzīmes garš. Ja šīs vērtības ir vienādas, NULLIF atgriezīs NULL, pretējā gadījumā tas atgriezīs parametra ifunequal vērtību. Šīs vērtības tiek izmantotas kā NVL2 funkcijas parametrs. Savukārt NVL2 atgriež aprakstu par to, vai salīdzinātie elementi atbilst vai nē.

Attēls 10-4 - Funkcijas NULLIF izmantošana

COALESCE funkcija

Funkcija COALESCE atgriež pirmo vērtību, kas nav NULL no parametru saraksta. Ja visi parametri ir NULL, tad tiek atgriezta NULL. Funkcijai COALESCE ir divi obligātie parametri un jebkurš izvēles parametru skaits, un sintakse ir COALESCE(expr1, expr2, ..., exprn), kur rezultāts ir expr1, ja izteiksmes 1 vērtība nav NULL, pretējā gadījumā rezultāts ir expr2. ja tas nav NULL, un tā tālāk. COALESCE pēc nozīmes ir vienāds ar ligzdotām NVL funkcijām

COALESCE(ekspr1, izteikums2) = NVL(ekspr1, izteikums2)

COALESCE(ekspr1, izteiciens2, izteiciens3) = NVL(ekspr1,NVL(ekspr2, izteiciens3))

Atgrieztās vērtības datu tips, ja tiek atrasta vērtība, kas nav NULL, ir vienāds ar pirmās vērtības, kas nav NULL, datu tipu. Lai izvairītos no kļūdas “ORA-00932: nekonsekventi datu tipi”, visiem parametriem, kas nav NULL, ir jābūt saderīgiem ar pirmo parametru, kas nav NULL. Apsveriet trīs piemērus

1. vaicājums: atlasiet apvienot (null, null, null, 'virkne') no dual;

2. vaicājums: atlasiet apvienot (null, null, null) no dual;

3. vaicājums: no dual atlasiet coalesce(substr('abc', 4), 'Not bc', 'Nav apakšvirknes');

1. vaicājums atgriež ceturto parametru: virkni, jo tas ir pirmais parametrs, kas nav NULL. Divu vaicājums atgriež NULL, jo visi parametri ir NULL. 3. vaicājums novērtē pirmo parametru, iegūst NULL un atgriež otro parametru, jo tas ir pirmais parametrs, kas nav NULL.

Funkcijas NVL2 parametri var būt mulsinoši, ja jau esat iepazinies ar NVL funkciju. NVL(original, ifnull) atgriež sākotnējo, ja vērtība nav NULL, pretējā gadījumā ifnull. NVL2 (original, ifnotnull, ifnull) atgriež ifnotnull, ja oriģināls nav null pretējā gadījumā ifnull. Neskaidrību rada fakts, ka otrais NVL funkcijas parametrs ir ifnull, savukārt NVL2 ir ifnotnull. Tāpēc nepaļaujieties uz parametra pozīciju funkcijā.

DECO funkcija

Funkcija DECODE īsteno ja-then-else loģiku, pārbaudot pirmos divus parametrus, lai tie būtu vienādi, un atgriežot trešo vērtību, ja tie ir vienādi, vai atšķirīgu vērtību, ja ne. Funkcijai DECODE ir trīs obligātie parametri, un sintakse ir DECODE(expr1, comp1, iftrue1, , ). Šie parametri tiek izmantoti, kā parādīts nākamajā pseidokoda piemērā.

IF expr1=comp1, tad atgriež iftrue1

Citādi, ja expr1=comp2, tad atgriež iftrue2

Citādi, ja exprN=compN, tad atgriež iftrueN

Else return NULL|jafalse;

Pirmkārt, expr1 tiek salīdzināts ar comp1. Ja tie ir vienādi, tiek atgriezta iftrue1. Ja expr1 nav vienāds ar comp1, tad tālākais ir atkarīgs no tā, vai ir norādīti parametri comp2 un iftrue2. Ja ir dota, tad expr1 vērtību salīdzina ar comp2. Ja vērtības ir vienādas, tiek atgriezta iftrue2. Ja nē, tad, ja ir compN, tiek salīdzināti iftrueN parametru pāri, expr1 un compN, un tiek atgriezts iftrueN, ja tas ir vienāds. Ja nevienā parametru kopā netika atrasta atbilstība, tad tiek atgriezta iffalse, ja šis parametrs ir norādīts, vai NULL.

Visi funkcijas DECODE parametri var būt izteiksmes. Atgriežamās vērtības veids ir vienāds ar pirmā validatora - parametra veidu sast. 1. Izteiksme izteiksm 1 netieši pārveido par comp parametru datu tipu1. Visas pārējās pieejamās kompozīciju opcijas 1 … compN tiek arī netieši pārveidoti par tipu comp 1. DECODE apstrādā NULL vērtību kā vienādu ar citu NULL vērtību, t.i. ja expr1 ir NULL un comp3 ir NULL un comp2 nav NULL, tad tiek atgriezta iftrue3. Apskatīsim dažus piemērus

1. vaicājums: atlasiet atšifrēt (1234, 123, '123 atbilst') no dual;

2. vaicājums: atlasiet atšifrējumu (1234, 123, '123 atbilst', 'Nav atbilstības') no dual;

3. vaicājums: atlasiet dekodēt ('meklēt', 'comp1', 'true1', 'comp2', 'true2', 'meklēt', 'true3', substr ('2search', 2, 6), 'true4', ' false') no dual;

Pirmajā vaicājumā tiek salīdzinātas vērtības 1234 un 123. Tā kā tās nav vienādas, iftrue1 tiek ignorēts, un, tā kā iffalse nav definēts, tiek atgriezta NULL. Otrais vaicājums ir identisks vaicājumam 1, izņemot to, ka ir definēta iffalse vērtība. Tā kā 1234 nav vienāds ar 123, tiek atgriezts iffalse — 'Nav atbilstības'. Trešais vaicājums pārbauda parametru vērtības pret meklēšanas vērtību. Parametri comp1 un comp2 nav vienādi ar 'meklēšanu', tāpēc iftrue1 un iftrue2 rezultāti tiek izlaisti. Trešajā comp3 elementu salīdzināšanas darbībā (6. parametra pozīcija) tiek atrasta atbilstība, un iftrue3 (7. parametrs) atgriešanas vērtība ir “true3”. Tā kā atbilstība ir atrasta, aprēķini vairs netiek veikti. Tas ir, neskatoties uz to, ka comp4 (parametrs 8) vērtība atbilst arī expr1, šī izteiksme nekad netiek novērtēta, jo atbilstība tika atrasta iepriekšējā salīdzinājumā.

CASE izteiksme

Visas trešās un ceturtās paaudzes programmēšanas valodas īsteno korpusa konstrukciju. Tāpat kā funkcija DECODE, arī CASE izteiksme ļauj ieviest if-then-else loģiku. Izteiciena CASE izmantošanai ir divas iespējas. Vienkāršs CASE priekšraksts iestata vienreiz salīdzināmo avota elementu un pēc tam uzskaita visus nepieciešamos pārbaudes nosacījumus. Sarežģītais (meklēts) CASE novērtē abus priekšrakstus katram nosacījumam.

Izteiksmei CASE ir trīs obligātie parametri. Izteiksmes sintakse ir atkarīga no veida. Vienkāršai CASE izteiksmei tas izskatās šādi

CASE meklēšanas_ekspr

KAD salīdzinājums_ekspr1, TAD iftrue1

)

Funkcija TRUNC atgriež skaitli n, kas saīsināts līdz m zīmēm aiz komata. Parametru m var izlaist, un tādā gadījumā n tiek saīsināts līdz veselam skaitlim.

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

TRUNC(100.25678; 2) X4

NO DUAL

SIGN(n) funkcija

Funkcija SIGN nosaka skaitļa zīmi. Ja n ir pozitīvs, tad funkcija atgriež 1. Ja negatīva, atgriež -1. Ja tā ir nulle, tiek atgriezts 0. Piemēram:

IZVĒLĒTIES ZĪME(100.22) X1, ZĪME(-100.22) X2, ZĪME(0) X3

NO DUAL

Interesanta šīs funkcijas iezīme ir spēja nodot m, kas vienāds ar nulli, nedalot ar 0 kļūdu.

POWER(n, m) funkcija

Funkcija POWER palielina skaitli n līdz jaudai m. Pakāpe var būt daļēja un negatīva, kas ievērojami paplašina šīs funkcijas iespējas.

IZVĒLĒTIES JAUDA (10, 2) X1, JAUDA (100, 1/2) X2,

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

NO DUAL

X1 X2 X3 X4
100 10 10 0,1

Dažos gadījumos, izsaucot šo funkciju, var rasties izņēmums. Piemēram:

IZVĒLĒTIES JAUDU (-100, 1/2) X2

NO DUAL

Šajā gadījumā tiek mēģināts aprēķināt negatīva skaitļa kvadrātsakni, kā rezultātā tiks parādīta kļūda ORA-01428 "Arguments ārpus diapazona".

Funkcija SQRT(n)

Šī funkcija atgriež kvadrātsakni no n. Piemēram:

SELECT SQRT(100) X

NO DUAL

EXP(n) un LN(n) funkcijas

Funkcija EXP paaugstina e līdz n pakāpei, un funkcija LN aprēķina n naturālo logaritmu (ar n ir jābūt lielākam par nulli). Piemērs:

ATLASĪT EXP(2) X1, LN(1) X2, LN(EXP(2)) X3

NVL funkcija

NVL funkcija parasti tiek izmantota visbiežāk. Funkcija saņem divus parametrus: NVL(expr1, expr2). Ja pirmais parametrs expr1 nav NULL, funkcija atgriež tā vērtību. Ja pirmais parametrs ir NULL, tā vietā funkcija atgriež otrā parametra vērtību expr2.

Apskatīsim praktisku piemēru. Laukā COMM EMP tabulā var būt NULL vērtības. Izpildot vaicājumu, piemēram:

ATLASĪT EMPNO, ENAME, COMM, NVL(COMM, 0) NVL_COMM

NO SCOTT.EMP

NULL vērtība tiks aizstāta ar nulli. Ņemiet vērā: ja vērtība tiek ģenerēta, izmantojot funkciju, tai tiek piešķirts aizstājvārds. Vaicājuma rezultāti izskatīsies šādi:

EMPNO ENAME KOMM NVL_COMM
7369 SMITS 0
7499 ALLENS 300 300
7521 BALTA 500 500
7566 DŽONS 0
7654 MĀRTĪNS 1400 1400
7698 BLEIKS 0
7782 KLĀRKS 0
7839 KINGS 0
7844 VĒRTĒJS 0 0
7900 Džeimss 0
7902 FORD 0
7934 MILLERS 0

CEIL(n) funkcija

Funkcija CEIL atgriež mazāko veselo skaitli, kas ir lielāks vai vienāds ar skaitli n, kas nodots kā parametrs. Piemēram:

ATLASĪT CEIL (100) X1, CEIL (-100) X2, CEIL (100.2) X3 , CEIL (-100.2) X4

NO DUAL

TRUNC(n[,m])

Funkcija TRUNC atgriež skaitli n, kas saīsināts līdz m zīmēm aiz komata. Parametru m var izlaist, un tādā gadījumā n tiek saīsināts līdz veselam skaitlim.

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

TRUNC(100.25678; 2) X4

NO DUAL

SIGN(n) funkcija

Funkcija SIGN nosaka skaitļa zīmi. Ja n ir pozitīvs, tad funkcija atgriež 1. Ja negatīva, atgriež -1. Ja tā ir nulle, tiek atgriezts 0. Piemēram:

IZVĒLĒTIES ZĪME(100.22) X1, ZĪME(-100.22) X2, ZĪME(0) X3

NO DUAL

Interesanta šīs funkcijas iezīme ir spēja nodot m, kas vienāds ar nulli, nedalot ar 0 kļūdu.

POWER(n, m) funkcija

Funkcija POWER palielina skaitli n līdz jaudai m. Pakāpe var būt daļēja un negatīva, kas ievērojami paplašina šīs funkcijas iespējas.

IZVĒLĒTIES JAUDA (10, 2) X1, JAUDA (100, 1/2) X2,

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

NO DUAL

X1 X2 X3 X4
100 10 10 0,1

Dažos gadījumos, izsaucot šo funkciju, var rasties izņēmums. Piemēram:

IZVĒLĒTIES JAUDU (-100, 1/2) X2

NO DUAL

Šajā gadījumā tiek mēģināts aprēķināt negatīva skaitļa kvadrātsakni, kā rezultātā tiks parādīta kļūda ORA-01428 "Arguments ārpus diapazona".

Funkcija SQRT(n)

Šī funkcija atgriež kvadrātsakni no n. Piemēram:

SELECT SQRT(100) X

NO DUAL

EXP(n) un LN(n) funkcijas

Funkcija EXP paaugstina e līdz n pakāpei, un funkcija LN aprēķina n naturālo logaritmu (ar n ir jābūt lielākam par nulli). Piemērs:

ATLASĪT EXP(2) X1, LN(1) X2, LN(EXP(2)) X3

Funkcija TO_CHAR ar cipariem

Funkcijas datu konvertēšanai citos datu tipos. TO_CHAR(skaitlis) pārvērš skaitli par tekstu. TO_NUMBER(virkne) pārvērš tekstu par skaitli.

SELECT TO_CHAR (123) FROM DUAL atgriezīs virkni 123, SELECT TO_NUMBER (`12345") FROM DUAL atgriezīs numuru 12345.

Laboratorijas darbi. Izvades skaitļu formāta maiņa

Ciparu formāta izmaiņas Oracle SQL, funkcija TO_CHAR darbam ar skaitliskām vērtībām.

Vingrinājums:

Uzrakstiet vaicājumu, kas parāda informāciju par darbinieku vārdu, uzvārdu un algu no tabulas hr.employees 1. attēlā parādītajā formātā. 3.4-1:

Rīsi. 3.4 -1

Tajā pašā laikā dati jāsakārto tā, lai pirmās tiktu parādītas rindas darbiniekiem ar lielāko algu.

Piezīme:

Dažas algas vērtības attēlā. 3.4-1 ir mainīti, tāpēc tie var neatbilst jūsu vērtībām.

Risinājums:

SELECT first_name AS "Vārds", uzvārds Kā "Uzvārds", TO_CHAR(ALGA, "L999999999.99") Kā "Alga" NO hr.darbiniekiem PASŪTĪT PĒC ALGAS DESC.

TO_NUMBER un TO_DATE funkcijas

Funkcija, lai pārvērstu virkni par datumu TO_DATE(virkne, formāts). Iespējamās formāta vērtības jau tika apspriestas iepriekš, tāpēc es sniegšu dažus šīs funkcijas izmantošanas piemērus. Piemēri:

ATLASĪT TO_DATE("01/01/2010", "DD.MM.GGGG") NO DUAL atgriezīs datumu `01.01.2010.»;

ATLASĪT TO_DATE("01.JAN.2010",`DD.MON.GGGG) NO DUAL atgriezīs datumu `01.01.2009.»;

ATLASĪT TO_DATE("15-01-10",`DD-MM-GG) NO DUAL atgriezīs datumu 15/01/2010.

Funkcija virknes konvertēšanai par skaitlisko vērtību TO_NUMBER (virkne, formāts). Visizplatītākās formātu vērtības ir norādītas tabulā, tāpēc apsvērsim šīs funkcijas izmantošanu, izmantojot piemērus. Piemēri:

ATLASĪT TO_NUMBER(`100") NO DUAL atgriezīs numuru 100 SELECT TO_NUMBER(`0010.01", "9999D99") NO DUAL atgriezīs numuru 10.01;

ATLASĪT TO_NUMBER("500 000", "999G999") NO DUAL atgriezīs numuru 500000.

RR elements datuma formātā

RR datuma un laika formāta elements ir līdzīgs YY datuma un laika formāta elementam, taču tas nodrošina papildu elastību datuma vērtību glabāšanai citos gadsimtos. RR datetime formāta elements ļauj saglabāt 20. gadsimta datumus 21. gadsimtā, norādot tikai pēdējos divus gada ciparus.

Ja kārtējā gada pēdējie divi cipari ir no 00 līdz 49, tad atgrieztajā gadā ir tādi paši pirmie divi cipari kā kārtējam gadam.

Ja kārtējā gada pēdējie divi cipari ir no 50 līdz 99, tad atgrieztā gada pirmie 2 cipari ir par 1 lielāki nekā kārtējā gada pirmie 2 cipari.

Ja kārtējā gada pēdējie divi cipari ir no 00 līdz 49, tad atgrieztā gada pirmie 2 cipari ir par 1 mazāki nekā kārtējā gada pirmie 2 cipari.

Ja kārtējā gada pēdējie divi cipari ir no 50 līdz 99, tad atgrieztajā gadā ir tādi paši pirmie divi cipari kā kārtējam gadam.

NVL funkcija

NVL funkcija parasti tiek izmantota visbiežāk. Funkcija saņem divus parametrus: NVL(expr1, expr2). Ja pirmais parametrs expr1 nav NULL, funkcija atgriež tā vērtību. Ja pirmais parametrs ir NULL, funkcija atgriež otrā parametra vērtību exp2.

Piemērs: izvēlieties NVL (piegādātāja_pilsēta, n/a) no piegādātājiem:

Iepriekš sniegtajā SQL priekšrakstā tas atgriezīs n/", ja laukā piegādātāja_pilsēta ir nulles vērtība. Pretējā gadījumā tas atgriezīs piegādātāja_pilsētas vērtību.

Vēl viens NVL funkcijas izmantošanas piemērs Oracle/PLSQL ir:

no piegādātājiem atlasiet piegādātāja_id, NVL (piegādātāja_desc, piegādātāja_nosaukums).

Šis SQL priekšraksts atgriezīsies piegādātāja_nosaukums lauks ja piegādātāja_apraksts satur nulles vērtību. Pretējā gadījumā tas atgriezīsies piegādātāja_apraksts.

Pēdējais piemērs: izmantojot Oracle/PLSQL funkciju NVL: atlasiet NVL(komisija, 0) no pārdošanas;

Šis SQL priekšraksts atgrieza vērtību 0 if komisija laukā ir nulles vērtība. Pretējā gadījumā tas atgrieztos komisijas maksas lauks.

NVL transformācijas dažādiem datu tipiem

Lai pārvērstu nenoteiktu vērtību faktiskā vērtībā, izmantojiet funkciju NVL: NVL ( izteiksme1, izteiksme2), Kur:

izteiksme1- Sākotnējā vai aprēķinātā vērtība, kas var būt nulle.

izteiksme2- vērtība, kas tiek aizstāta ar nulles vērtību.

Piezīme: Funkciju NVL var izmantot jebkura veida datu konvertēšanai, taču rezultāts vienmēr būs tāda paša veida kā izteiksme1.

NVL konvertēšana par dažādi veidi:

NUMBER-NVL (ciparu kolonna, 9).

CHAR vai VARCHAR2 — NVL (rakstzīmes|kolonna,"Nav pieejams").

Laboratorijas darbi. NVL funkcijas pielietošana

NVL funkcija, lai apstrādātu nulles vērtības Oracle SQL.

Vingrinājums:

Uzrakstiet vaicājumu, kas parāda informāciju par darbinieku vārdiem un uzvārdiem no tabulas hr.darbinieki., kā arī darbinieka komisijas likmi (kolonna COMMISSION_PCT). Šajā gadījumā tiem darbiniekiem, kuriem komisijas maksa nav noteikta, ir jāparāda vērtība 0. Vaicājuma rezultātam jābūt tādam pašam kā parādīts attēlā. 3,5-1.

Rīsi. 3.5 -1 (vērtības tiek rādītas, sākot no 51. rindas)

Risinājums:

Atbilstošais pieprasījuma kods varētu izskatīties šādi:

SELECT first_name AS "First Name", last_name Kā "Uzvārds", NVL (COMMISSION_PCT, 0) Kā "Komisijas likme" NO hr.employees.




Tops