Nvl sql apraksts. NVL reklāmguvumi dažādiem datu veidiem

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

Ligzdotas funkcijas

Ligzdotās funkcijas izmanto vienas funkcijas atgriešanas vērtību kā ieejas parametru citai funkcijai. Funkcijas vienmēr atgriež tikai vienu vērtību. Tāpēc jūs varat uzskatīt funkcijas izsaukuma rezultātu par burtisku vērtību, ja to izmantojat kā parametru izsaukumam uz citu funkciju. Iekļautās funkcijas var ligzdot jebkurā ligzdošanas līmenī. Viens 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 (param1.1, F2 (param2.1, param2.2, F3 (param3.1)), param1.3)

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

  1. Funkcija F3 (param1) tiek aprēķināta un atgriešanās vērtība tiek izmantota kā trešais parametrs 2. funkcijai, sauksim to par param2.
  2. Pēc tam tiek aprēķināta funkcija F2 (param1, param2.2, param2.3) un atgriešanās vērtība tiek izmantota kā otrais F1 funkcijas parametrs - param1.2
  3. Visbeidzot, funkcija F1 (param1, param2, param1.3) tiek novērtēta un atgriezta izsaucēja programmai.

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

Apsveriet pieprasījumu

izvēlieties nākamo_dienu (pēdējā_diena (sysdate) -7, 'ot') no dual;

  1. Šajā pieprasījumā no apakšas uz augšu ir trīs funkcijas - SYSDATE, LAST_DAY, NEXT_DAY. Pieprasījums tiek izpildīts šādi
  2. Tiek izpildīta visvairāk ligzdotā SYSDATE funkcija. 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, kas ir 2009. gada 31. oktobris.
  4. Tad no šī datuma tiek atņemtas septiņas dienas - izrādās, 24. oktobris.
  5. Visbeidzot, tiek novērtēta funkcija NEXT_DAY (‘24 -OCT-2009 ’,‘ ot ”), un vaicājums atgriež oktobra pēdējo otrdienu-mūsu piemērā tas ir 27-OCT-2009.

Ir pietiekami grūti saprast un veidot sarežģītas izteiksmes, izmantojot daudzus ligzdotus funkciju izsaukumus, taču tas nāk ar laiku un praksi. Jūs varat sadalīt šādus izteicienus daļās un pārbaudīt tos atsevišķi. DUAL tabula ir ļoti noderīga, pārbaudot vaicājumus un funkciju izsaukumus. Varat pārbaudīt un atkļūdot mazas sastāvdaļas, kuras pēc tam var apvienot vienā lielā, vēlamajā izteiksmē.

Sazarošanās funkcijas

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

NVL funkcija

Funkcija NVL NULL pārbauda jebkura veida datu slejas vai izteiksmes vērtību. 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 nepieciešamie parametri, un sintakse ir NVL (oriģināls, ja nav), kur oriģināls ir pārbaudāmā sākotnējā vērtība, un ja nulle ir funkcijas atgrieztais rezultāts, ja oriģināls ir NULL. Ifnull un sākotnējo parametru datu tipam jābūt saderīgam. Tas ir, vai nu datu tipam 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 veida datu vērtību kā sākotnējā parametra datu tips. Apsveriet trīs pieprasījumus

1. vaicājums: izvēlieties nvl (1234) no dubultā;

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

3. vaicājums: no dual atlasiet nvl (apakšstruktūra (“abc”, 4), “Nav nevienas apakšvirknes”);

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

NVL funkcija ir ļoti noderīga, strādājot ar cipariem. To izmanto, lai NULL vērtības pārvērstu par 0, lai aritmētiskās operācijas virs numuriem neatgriezās NULL

NVL funkcija2

NVL2 nodrošina vairāk funkcionalitātes nekā NVL, taču tas arī apstrādā NULL vērtības. Tas pārbauda jebkura veida kolonnas vai izteiksmes vērtību NULL. Ja vērtība nav NULL, 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 nepieciešamie parametri un sintakse NVL2 (oriģināls, ja nav nulles, ja nav nulles), kur oriģināls ir pārbaudāmā vērtība, ja ifnull ir atgrieztā vērtība, ja oriģināls nav NULL, un ifnull ir atgrieztā vērtība, ja oriģināls ir NULL. Ifnotnull un ifnull parametru datu tipiem ir jābūt saderīgiem, un tie nedrīkst būt LONG tipa. Funkcijas NVL2 atgrieztais datu tips 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 dubultā;

3. vaicājums: no dubultā atlasiet nvl2 (apakšstruktūra (‘abc’, 2), ‘Not bc’, ‘No substring’);

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

NULLIF funkcija

Funkcija NULLIF pārbauda divas identitātes vērtības. Ja tie ir vienādi, tiek atgriezts NULL, pretējā gadījumā tiek atgriezts pirmais parametrs. Funkcijai NULLIF ir divi nepieciešamie parametri un NULLIF sintakse (ifunequal, salīdzinājuma_pozīcija). Funkcija salīdzina divus parametrus un, ja tie ir identiski - tiek atgriezts NULL, pretējā gadījumā ifunequal parametrs. Apsveriet pieprasījumus

1. vaicājums: izvēlieties nulli (1234, 1234) no dubultā;

Viens vaicājums atgriež NULL, jo parametri ir identiski. Vaicājuma 2 virknes netiek pārvērstas datumā, bet tiek salīdzinātas kā virknes. Tā kā virknes ir dažāda garuma, tiek atgriezta ifunequal 24-JUL-2009.

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

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

Funkcija COALESCE

Funkcija COALESCE atgriež pirmo vērtību, kas nav NULL no parametru saraksta. Ja visi parametri ir NULL, tiek atgriezts NULL. Funkcijai COALESCE ir divi nepieciešamie parametri un tik daudz izvēles parametru, cik vēlaties, un COALESCE sintakse (izteiksme1, izteiksme2, ..., izteiksme), kur rezultāts ir izteiksme1, ja izteiksme nav NULL, pretējā gadījumā izteiksme2 tiek atgriezta, ja tā nav NULL un tā tālāk. COALESCE ir vienādas ar ligzdotām NVL funkcijām

COALESCE (izteiksme1, izteiksme2) = NVL (izteiksme1, izteiksme2)

COALESCE (izteiksme1, izteiksme2, izteiksme3) = NVL (izteiksme1, NVL (izteiksme2, izteiksme3))

Atgriežamās vērtības datu tips, ja tiek atrasta vērtība, kas nav NULL, ir vienāda 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, jābūt saderīgiem ar pirmo parametru, kas nav NULL. Apskatīsim trīs piemērus

1. vaicājums: atlasiet saplūšanu (null, null, null, 'virkne') no dual;

2. vaicājums: atlasiet saplūšanu (null, null, null) no dual;

3. vaicājums: no divējāda atlasiet saplūšanu (apakšstruktūra (“abc”, 4), “Not bc”, “No substring”);

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

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

DEKODĒŠANAS funkcija

Funkcija DECODE ievieš loģiku “ja-tad-citādi”, 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 citu vērtību, ja tie nav vienādi. Funkcijai DECODE ir trīs nepieciešamie parametri un DECODE sintakse (expr1, comp1, iftrue1 ,,). Šie parametri tiek izmantoti, kā parādīts nākamajā pseidokoda piemērā

Ja izteiksme1 = komp1, tad atgrieziet iftrue1

Pretējā gadījumā, ja izteiksme1 = komp2, tad atdodiet patieso2

Pretējā gadījumā, ja exprN = compN, tad atgrieziet iftrueN

Cita atdeve NULL | iffalse;

Pirmkārt, izteiksme1 tiek salīdzināta ar komp1. Ja tie ir vienādi, tiek atgriezts iftree1. Ja izteiksme1 nav vienāda ar komp1, turpmākā darbība ir atkarīga no tā, vai ir norādīti parametri comp2 un iftrue2. Ja tā ir norādīta, izteiksmes1 vērtība tiek salīdzināta ar comp2. Ja vērtības ir vienādas, tiek atgriezta iftrue2. Ja nē, tad, ja ir parametru pāri compN, iftrueN, expr1 un compN tiek salīdzināti un iftrueN tiek atgriezti, ja tie ir vienādi. Ja nevienā parametru kopā netika atrasta atbilstība, tiek atgriezts vai nu iffalse, ja šis parametrs tika norādīts, vai NULL.

Visi funkcijas DECODE parametri var būt izteiksmes. Atgriešanās veids ir vienāds ar pirmā validācijas elementa tipu - parametru comp 1. Izteiksmes izteiksme 1 ir netieši konvertējams parametra comp1. Visas pārējās pieejamās comp iespējas 1 ... komp arī netieši konvertējams komp 1. DECODE NULL vērtību uzskata par vienādu ar citu NULL vērtību, t.i. ja izteiksme1 ir NULL un komp3 ir NULL un komp2 nav NULL, tad tiek atgriezts iftrue3. Apskatīsim dažus piemērus

1. vaicājums: atlasiet dekodēšanu (1234, 123, '123 is match') no dual;

2. vaicājums: izvēlieties dekodēšanu (1234, 123, ‘123 is match’, ‘No match’) no dual;

3. vaicājums: atlasiet atšifrēšanu ('search', 'comp1', 'true1', 'comp2', 'true2', 'search', 'true3', substr ('2search', 2, 6), 'true4', ' nepatiesa ') no dubultā;

Pirmais vaicājums salīdzina vērtību 1234 un 123. Tā kā tie nav vienādi, iftrue1 tiek ignorēts un tā kā neviena nepareiza vērtība nav definēta, tiek atgriezta NULL. Otrais pieprasījums ir identisks 1. pieprasījumam, izņemot to, ka ir norādīts iffalse. Tā kā 1234 nav vienāds ar 123, tad tiek atgriezta iffalse - “Nav atbilstības”. Pieprasot trīs, tiek pārbaudītas parametru vērtības, lai noskaidrotu, vai tās atbilst meklēšanas vērtībai. Parametri comp1 un comp2 nav vienādi “meklēšanai”, tāpēc iftrue1 un iftrue2 rezultāti tiek izlaisti. Atbilstība ir atrodama trešajā comp3 salīdzinājumā (6. parametra pozīcija), un atgriežamā vērtība iftrue3 (7. parametrs) ir “true3”. Tā kā tika atrasta atbilstība, turpmākie aprēķini netiek veikti. Tas ir, neskatoties uz to, ka arī comp4 vērtība (8. parametrs) atbilst izteiksmei1, šī izteiksme nekad netiek aprēķināta, jo atbilstība tika atrasta iepriekšējā salīdzinājumā.

CASE izteiksme

Visas trešās un ceturtās paaudzes programmēšanas valodas ievieš lietu konstrukciju. Tāpat kā funkcija DECODE, arī CASE izteiksme ļauj īstenot loģiku “ja-tad-citādi”. CASE izteiksmes izmantošanai ir divas iespējas. Vienkārša CASE izteiksme nosaka avotu, lai to salīdzinātu vienu reizi, un pēc tam tiek uzskaitīti visi nepieciešamie testa nosacījumi. Meklētā CASE novērtē abus apgalvojumus katram nosacījumam.

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

CASE search_expr

KAD salīdzinājums_expr1 THEN iftrue1

)

Funkcija TRUNC atgriež skaitli n, saīsinātu līdz m zīmei aiz komata. Parametru m var izlaist - šajā 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, funkcija atgriež 1. Ja n ir negatīvs, tiek atgriezts -1. Ja vienāds ar nulli, tad tiek atgriezta 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 vienādu ar nulli - šajā gadījumā kļūda nav dalīta ar 0.

POWER (n, m) funkcija

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

SELECT POWER (10, 2) X1, POWER (100, 1/2) X2,

POWER (1000, 1/3) X3, POWER (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:

ATLASIET JAUDU (-100, 1/2) X2

NO DUAL

V Šis gadījums tiek mēģināts aprēķināt negatīvā skaitļa kvadrātsakni, kā rezultātā radīsies kļūda ORA-01428 "Arguments ārpus diapazona".

SQRT (n) funkcija

Šī funkcija atgriežas Kvadrātsakne no skaitļa n. Piemēram:

SELECT SQRT (100) X

NO DUAL

EXP (n) un LN (n) funkcijas

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

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

Funkcija TO_CHAR ar cipariem

Funkcijas datu pārvēršanai citos datu veidos. 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 12345, SELECT TO_NUMBER (`12345") FROM DUAL atgriezīs 12345.

Laboratorijas darbs. Parādīto ciparu formāta maiņa

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

Vingrinājums:

Uzrakstiet vaicājumu, kurā tiek parādīts darbinieku vārds, uzvārds un informācija par algu tabulā hr.darbinieki 1. attēlā parādītajā formātā. 3.4-1:

Rīsi. 3.4 -1

Šajā gadījumā dati jāsakārto tā, lai pirmās rindas tiktu parādītas darbiniekiem ar augstā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:

IZVĒLĒTIES VĀRDNĪDU KĀ "Vārds", uzvārds Kā "Uzvārds", TO_CHAR (ALGA, "L999999999.99") Kā "Alga" NO st. Darbinieki PASŪTĪT AR ALGAS APK.

Funkcijas TO_NUMBER un TO_DATE

Funkcija virknes pārveidošanai 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 vairākus šīs funkcijas izmantošanas piemērus. Piemēri:

SELECT TO_DATE ("01.01.2010.", DD.MM.YYYY ") NO DUAL atgriezīs datumu `01.01.2010";

SELECT TO_DATE ("01.JAN.2010", `DD.MON.YYYY") NO DUAL atgriezīs datumu `01.01.2009";

SELECT TO_DATE ("15-01-10", DD-MM-YY) NO DUAL atgriezīs datumu "01/15/2010".

Funkcija virknes pārveidošanai par skaitlisku vērtību TO_NUMBER (virkne, formāts). Visbiežāk sastopamās formāta vērtības ir norādītas tabulā, tāpēc aplūkosim šīs funkcijas izmantošanu ar piemēriem. Piemēri:

SELECT TO_NUMBER ("100") NO DUAL atgriezīs skaitli 100 SELECT TO_NUMBER (`0010.01", "9999D99") NO DUAL atgriezīsies 10.01;

SELECT TO_NUMBER ("500 000", "999G999") NO DUAL atdos 500 000.

RR elements datuma formātā

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

Ja kārtējā gada pēdējie divi cipari ir no 00 līdz 49, tad atgrieztajam gadam 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āk 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 atgrieztajam gadam ir tādi paši pirmie divi cipari kā kārtējam gadam.

NVL funkcija

NVL funkcija parasti tiek izmantota visbiežāk. Funkcijai ir divi parametri: NVL (expr1, exp2). Ja pirmais izteiksmes1 parametrs nav NULL, funkcija atgriež savu vērtību. Ja pirmais parametrs ir NULL, funkcija atgriež otrā parametra exp2 vērtību.

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

Iepriekš minētais SQL paziņojums atgriezīs n / ", ja piegādātāja_pilsēta ir nulle, pretējā gadījumā tiks atgriezta piegādātāja_pilsēta.

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

no piegādātājiem izvēlieties piegādātāja ID, NVL (piegādātāja_apraksts, piegādātāja_nosaukums).

Šis SQL paziņojums atgriezīsies piegādātāja_nosaukums lauks, ja piegādātājs_dets satur nulles vērtību. Pretējā gadījumā tas atgriezīsies piegādātājs_dets.

Pēdējais piemērs: NVL funkcijas izmantošana Oracle / PLSQL ir: izvēlieties NVL (komisija, 0) no pārdošanas;

Šis SQL paziņojums atgriezās 0, ja komisija lauks satur nulles vērtību. Pretējā gadījumā tas atgrieztos komisija lauks.

NVL reklāmguvumi dažādiem datu veidiem

Funkcija NVL tiek izmantota, lai nenoteiktu vērtību pārvērstu faktiskajā vērtībā: NVL ( izteiksme1, izteiksme 2), kur:

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

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

Piezīme: NVL funkciju var izmantot jebkura veida datu konvertēšanai, bet rezultāts vienmēr būs tāds pats kā izteiksme1.

NVL konvertēšana dažādiem veidiem:

NUMURS - NVL (ciparu kolonna, 9).

CHAR vai VARCHAR2 - NVL (simboli | kolonna,"Nav pieejams").

Laboratorijas darbs. NVL funkcijas pielietošana

NVL funkcija darbam ar nulles vērtībām Oracle SQL.

Vingrinājums:

Uzrakstiet vaicājumu, kurā tiek parādīta informācija par darbinieku vārdiem un uzvārdiem no hr.darbinieki. Tabula, kā arī komisijas maksa (sleja COMMISSION_PCT) par darbinieku. Šajā gadījumā tiem darbiniekiem, kuriem komisija nav noteikta, jums 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 (parāda vērtības, sākot no 51. rindas)

Risinājums:

Atbilstošais pieprasījuma kods var būt šāds:

IZVĒLIES vārdu_vārds KĀ “Vārds”, uzvārds Kā “Uzvārds”, NVL (KOMISIJA_PCT, 0) Kā “komisijas maksa” NO hr.darbinieki.

NVL funkcija

NVL funkcija parasti tiek izmantota visbiežāk. Funkcijai ir divi parametri: NVL (expr1, expr2). Ja pirmais izteiksmes1 parametrs nav NULL, funkcija atgriež savu vērtību. Ja pirmais parametrs ir NULL, funkcija tā vietā atgriež otrā parametra expr2 vērtību.

Apsveriet praktisks piemērs... EMP tabulas lauks COMM var saturēt NULL vērtības. Izpildot šādu vaicājumu:

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

NO SCOTT.EMP

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

EMPNO ENAME KOMM NVL_COMM
7369 SMITH 0
7499 ALLEN 300 300
7521 APAĻA 500 500
7566 JONES 0
7654 MARTINS 1400 1400
7698 BLAKE 0
7782 KLĀKS 0
7839 KARALIS 0
7844 TURNERIS 0 0
7900 Džeimss 0
7902 FORD 0
7934 MILLER 0

CEIL (n) funkcija

Funkcija CEIL atgriež mazāko veselu 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

Funkcija TRUNC (n [, m])

Funkcija TRUNC atgriež skaitli n, saīsinātu līdz m zīmei aiz komata. Parametru m var izlaist - šajā 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, funkcija atgriež 1. Ja n ir negatīvs, tiek atgriezts -1. Ja vienāds ar nulli, tad tiek atgriezta 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 vienādu ar nulli - šajā gadījumā kļūda nav dalīta ar 0.

POWER (n, m) funkcija

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

SELECT POWER (10, 2) X1, POWER (100, 1/2) X2,

POWER (1000, 1/3) X3, POWER (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:

ATLASIET JAUDU (-100, 1/2) X2

NO DUAL

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

SQRT (n) funkcija

Šī 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, un funkcija LN aprēķina n dabisko logaritmu (kur n jābūt lielākam par nulli). Piemērs:

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