Filiāles operatori izvēlētajā komandā. NVL konvertēšana dažādiem datu tipiem Laboratorijas darbi

Funkcija TO_CHAR ar numuriem

Datu konversijas funkcijas citiem datu tipiem. TO_CHAR (numurs) pārveido numuru tekstā. To_numer pārvērš tekstu uz numuru.

Izvēlieties TO_CHAR (123) no Dual atgriezīsies 123 rindā, izvēlieties to_number ("12345") no Dual atgriezīsies skaitlis 12345.

Laboratorijas darbs. Izejas numuru formāta maiņa

Izmaiņas formātā skaitliskās vērtības Oracle SQL, TO_CHAR funkcija, lai strādātu ar ciparu vērtībām.

Uzdevums:

Uzrakstiet pieprasījumu, kas parādītu informāciju par darbinieku vārdu, uzvārdu un algu no HR.Employees tabulas attēlā redzamajā formātā. 3.4-1:

Fig. 3.4. -1

Tajā pašā laikā dati ir sakārtoti tā, lai pirmoreiz parādītu darbinieku rindas ar vislielāko algu.

Piezīme:

Dažas algas 1. attēlā. 3.4-1 tika mainīti, tāpēc tie nesakrīt ar jūsu vērtībām.

Lēmums:

Izvēlieties First_name kā "Vārds", Last_name kā "uzvārds", TO_CHAR (alga, "L999999999.99") kā "salāti" no HR.Employees pasūtījuma pēc Algas Desc.

Funkcijas to_number un to_date

Rindu konversijas funkcija pie T_Date datuma (virkne, formāts). Iespējamie formāti jau ir aplūkoti iepriekš, tāpēc es sniegšu dažus piemērus, izmantojot šo funkciju. Piemēri:

Atlasīt To_date (01.01.2010, `dd.mm.yyyy) No. Dual atgriezīs datumu `01.01.2010";

Atlasīt To_date (01.jan.2010, `dd.mon.yyyy) No. Dual atgriezīs datumu `01.01.2009";

Atlasīt To_date ("15-01-10", `dd-mm-yy") No. Dual atgriezīs datumu `01/15/2010".

Rindu konversijas funkcija uz ciparu vērtību līdz_numer (virkne, formāts). Visbiežāk sastopamie formāti ir uzskaitīti tabulā, tāpēc apsveriet šīs funkcijas izmantošanu piemēros. Piemēri:

Atlasīt To_number (100 ") No. Dual atgriezīsies skaitlis 100 Izvēlieties to_number (0010.01, "9999D99) No. Dual atgriezīsies numuru 10.01;

Atlasīt TO_NUMER ("500 000", "999G999") No. Dual atgriezīsies numuru 500000.

RR elements datumu formātā

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

Ja divi pēdējie pēdējo gadu skaitļi ir 00 līdz 49, atgriešanās gadam ir tādi paši pirmie divi cipari kā kārtējā gadā.

Ja divus pēdējos rādītājus no kārtējā gada no 50 līdz 99, pirmie 2 cipari no atgrieztā gada ir 1 vairāk nekā pirmajos divos ciparus kārtējā gada.

Ja divi pēdējie rādītāji no kārtējā gada ir 00 līdz 49, pirmie 2 cipari no atgrieztā gada ir 1 mazāk nekā pirmajiem 2 cipariem kārtējā gada.

Ja divus pēdējos skaitļus no kārtējā gada no 50 līdz 99, tad atgrieztajā gadā ir tādi paši pirmie divi cipari, kā kārtējā gadā.

NVL funkcija

NVL funkcija parasti tiek piemērota visbiežāk. Funkcija saņem divus parametrus: NVL (EXPR1, EXERG2). Ja pirmais EXPR1 parametrs nav vienāds ar , tad funkcija atgriež tās vērtību. Ja pirmais nulles parametrs, tad funkcija atgriež EXERG2 otrā parametra vērtību2.

Piemērs: izvēlieties NVL (SUPPLESS_CITY, N / A ") no piegādātājiem: \\ t

SQL paziņojums atgriezīsies n / ", ja laukā SUSTRET_CITY satur nulles vērtību. Pretējā gadījumā tas atgriezīs vērtību SUSPERT_CITY.

Vēl viens piemērs, kā izmantot NVL funkciju Oracle / PLSQL ir:

izvēlieties SUTPAGER_ID, NVL (SUPPLETE_DESC, SUPPERT_NAME) no piegādātājiem.

Šī SQL pieteikums atgriezīsies piegādātājs_name. Lauks, ja piegādātājs_desc. satur nulles vērtību. Pretējā gadījumā viņš atgriezīsies piegādātājs_desc..

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

Šis SQL paziņojums atgriezās 0, ja komisija Laukā ir nulles vērtība. Pretējā gadījumā būtu iespējams atgriezties komisija lauks.

NVL konvertēšana dažādiem datu tipiem

Lai pārvērstu nenoteiktu vērtību faktiskajai funkcijai, izmanto NVL funkciju: NVL ( expression1, izteiksme 2), kur:

ekspresion1- Avots vai aprēķinātā vērtība, kas var būt neskaidra.

expression2. - vērtība, kas ir aizvietota, nevis uz nenoteiktu vērtību.

Piezīme: NVL funkciju var izmantot, lai pārvērstu jebkāda veida datus, bet rezultāts vienmēr būs tāds pats kā kā ekspresion1.

NVL konvertēšana dažādiem veidiem:

Numurs - NVL. (skaitliskā kolonna, 9).

Char vai varchar2 - NVL (Simboli | kolonna, "Nav pieejams").

Laboratorijas darbs. NVL funkcijas piemērošana

NVL funkcija strādāt ar neskaidrām vērtībām Oracle SQL.

Uzdevums:

Uzrakstiet pieprasījumu, kas parāda informāciju par personāla vārdu un uzvārdu no HR.Employees tabulas., Kā arī Komisijas piedāvājums (kolonnas komisijas_pct) darbiniekam. Tajā pašā laikā tiem darbiniekiem, kuriem Komisija nav definēta, ir nepieciešams parādīt vērtību 0. vaicājuma rezultātam jābūt tādam, kā norādīts 1. attēlā. 3.5-1.

Fig. 3.5 -1 (vērtības sākas no 51. līnijas)

Lēmums:

Atbilstošās pieprasījuma kodekss var būt:

Izvēlieties First_name kā "Vārds", Last_name AS "Uzvārds", NVL (komisijas_pct, 0) kā "Komisijas likme" no hr.employees.

NVL funkcija

NVL funkcija parasti tiek piemērota visbiežāk. Funkcija saņem divus parametrus: NVL (EXPR1, EXPR2). Ja pirmais EXPR1 parametrs nav vienāds ar , tad funkcija atgriež tās vērtību. Ja pirmais null parametrs, tad funkcija atgriež otrā EXPR2 parametra vērtību.

Apsvērt praktisks piemērs. Comm laukums EMP tabulā var būt nulles vērtības. Veicot veidlapas vaicājumu:

Izvēlieties Empno, Ename, Comm, NVL (COMM, 0) NVL_COMM

No Scott.emp

nulles vērtība tiks aizstāta ar nulli. Lūdzu, ņemiet vērā, ka gadījumā, kad veido vērtību, izmantojot funkciju, tas tiek piešķirts pseidonīmam. Pieprasījuma rezultāti būs:

Empno. Ēst. Comm. Nvl_comm.
7369 Smith 0
7499 Allen 300 300
7521 Palāta 500 500
7566 Jones 0
7654 Martin. 1400 1400
7698 Nomierināt 0
7782 Clark. 0
7839 Karalis. 0
7844 Virpotājs 0 0
7900 Džeimss. 0
7902 Forda 0
7934 Dzirnavnieks 0

Griests (n)

Ceila funkcija atgriež mazāko veselo skaitli, lielāku vai vienādu ar N. skaitu Piemēram:

Izvēlieties Ceil (100) X1, Ceil (-100) X2, Ceil (100.2) X3, Ceil (-100.2) x4

No dubultās

TRUNC FUNCTION (N [, M])

Pēc decimālā punkta atšķaidīto numuru atgriež numuru n saīsināts līdz M zīmēm. M parametrs nedrīkst būt norādīts - šajā gadījumā, n atdalīts uz visu.

Izvēlieties Trung (100.25678) X1, TRUNC (-100.25678) X2, TRUCK (100,99) X3,

TRUCK (100.25678, 2) X4

No dubultās

Pierakstīšanās (n) funkcija

Pierakstīšanās funkcija nosaka skaitu skaitu. Ja n ir pozitīvs, tad funkcija atgriežas 1. Ja tiek atgriezta negatīva -1. Ja nulle ir nulle, tad tiek atgriezts 0. Piemēram:

Izvēlieties Sign (100.22) x1, zīme (-100.22) x2, zīme (0) x3

No dubultās

Interesanta šīs funkcijas iezīme ir iespēja pārraidīt m vienādu ar nulli - tas nerada sadalīšanas kļūdas par 0.

Jauda (n, m) funkcija

Enerģijas funkcija veido numuru n līdz grādu m. Grāds var būt frakcionēts un negatīvs, kas ievērojami paplašina šīs funkcijas iespējas.

Atlasiet jaudu (10, 2) x1, jauda (100, 1/2) x2,

Jauda (1000, 1/3) x3, jauda (1000, -1/3) x4

No dubultās

X1 X2 X3. X4.
100 10 10 0,1

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

Izvēlieties jauda (-100, 1/2) x2

No dubultās

Iebildums Šis gadījums Tiek veikts mēģinājums aprēķināt kvadrātsakni no negatīva skaita, kas radīs ORA-01428 kļūdu "argumentu ārpus diapazona".

SQRT (N) funkcija

Šī funkcija atgriežas kvadrātsakne no numura n. Piemēram:

Izvēlieties SQRT (100) x

No dubultās

Funkcijas EXP (N) un LN (N)

Exp funkcija erends E pakāpei N, un LN funkcija aprēķina dabisko logaritmu no N (ar N, n jābūt lielākam par nulli). Piemērs:

Izvēlieties EXP (2) X1, LN (1) X2, LN (EXP (2)) x3

NVL funkcija

NVL funkcija parasti tiek piemērota visbiežāk. Funkcija saņem divus parametrus: NVL (EXPR1, EXPR2). Ja pirmais EXPR1 parametrs nav vienāds ar , tad funkcija atgriež tās vērtību. Ja pirmais null parametrs, tad funkcija atgriež otrā EXPR2 parametra vērtību.

Apsveriet praktisku piemēru. Comm laukums EMP tabulā var būt nulles vērtības. Veicot veidlapas vaicājumu:

Izvēlieties Empno, Ename, Comm, NVL (COMM, 0) NVL_COMM

No Scott.emp

nulles vērtība tiks aizstāta ar nulli. Lūdzu, ņemiet vērā, ka gadījumā, kad veido vērtību, izmantojot funkciju, tas tiek piešķirts pseidonīmam. Pieprasījuma rezultāti būs:

Empno. Ēst. Comm. Nvl_comm.
7369 Smith 0
7499 Allen 300 300
7521 Palāta 500 500
7566 Jones 0
7654 Martin. 1400 1400
7698 Nomierināt 0
7782 Clark. 0
7839 Karalis. 0
7844 Virpotājs 0 0
7900 Džeimss. 0
7902 Forda 0
7934 Dzirnavnieks 0

Griests (n)

Ceila funkcija atgriež mazāko veselo skaitli, lielāku vai vienādu ar N. skaitu Piemēram:

Izvēlieties Ceil (100) X1, Ceil (-100) X2, Ceil (100.2) X3, Ceil (-100.2) x4

No dubultās

TRUNC FUNCTION (N [, M])

Pēc decimālā punkta atšķaidīto numuru atgriež numuru n saīsināts līdz M zīmēm. M parametrs nedrīkst būt norādīts - šajā gadījumā, n atdalīts uz visu.

Izvēlieties Trung (100.25678) X1, TRUNC (-100.25678) X2, TRUCK (100,99) X3,

TRUCK (100.25678, 2) X4

No dubultās

Pierakstīšanās (n) funkcija

Pierakstīšanās funkcija nosaka skaitu skaitu. Ja n ir pozitīvs, tad funkcija atgriežas 1. Ja tiek atgriezta negatīva -1. Ja nulle ir nulle, tad tiek atgriezts 0. Piemēram:

Izvēlieties Sign (100.22) x1, zīme (-100.22) x2, zīme (0) x3

No dubultās

Interesanta šīs funkcijas iezīme ir iespēja pārraidīt m vienādu ar nulli - tas nerada sadalīšanas kļūdas par 0.

Jauda (n, m) funkcija

Enerģijas funkcija veido numuru n līdz grādu m. Grāds var būt frakcionēts un negatīvs, kas ievērojami paplašina šīs funkcijas iespējas.

Atlasiet jaudu (10, 2) x1, jauda (100, 1/2) x2,

Jauda (1000, 1/3) x3, jauda (1000, -1/3) x4

No dubultās

X1 X2 X3. X4.
100 10 10 0,1

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

Izvēlieties jauda (-100, 1/2) x2

No dubultās

Šādā gadījumā tiek mēģināts aprēķināt kvadrātsakni no negatīva skaita, kas novedīs pie ORA-01428 "argumentu ārpus diapazona" kļūdas.

SQRT (N) funkcija

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

Izvēlieties SQRT (100) x

No dubultās

Funkcijas EXP (N) un LN (N)

Exp funkcija erends E pakāpei N, un LN funkcija aprēķina dabisko logaritmu no N (ar N, n jābūt lielākam par nulli). Piemērs:

Izvēlieties EXP (2) X1, LN (1) X2, LN (EXP (2)) x3

Ieguldītas funkcijas mēs nedaudz agrāk pieskārāmies, tagad tos nedaudz sīkāk tos apsveriet. Mēs arī apsvērsim funkciju, kas darbojas ar nulles vērtību un funkcijām, kas palīdz īstenot filiāles darbību pieprasījumā.

Ligzdotās funkcijas

Nested funkcijas Es izmantoju atgriezto vērtību vienu funkciju kā ievades parametru citai funkcijai. Funkcijas vienmēr atgriež tikai vienu vērtību. Tāpēc jūs varat apsvērt funkcijas funkcijas rezultātu kā burtisko vērtību, ja to izmantojat kā zvana parametru uz citu funkciju. Līnijas funkcijas var pievienot jebkuram ligzdošanas līmenim. Izskatās uz vienu funkciju

Funkcija1 (parametrs1, parametrs2, ...) \u003d rezultāts

Funkcijas parametra nomaiņa, lai izsauktu citu funkciju, var izraisīt sugu izskatu

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

Sākumā ligzdotās funkcijas tiek aprēķinātas, pirms to rezultāti tiek izmantoti kā ievades vērtības citām funkcijām. Funkcijas tiek aprēķinātas no dziļākās ligzdošanas līmeņa uz augšu pa kreisi pa labi. Iepriekšējā izteiksme tiek veikta šādi

  1. F3 f3 (param1) tiek aprēķināts un atgriešanās vērtība tiek izmantota kā trešais parametrs funkciju 2, zvanīsim param2.3
  2. Pēc tam funkcija F2 tiek aprēķināta (param1, param2.2, param2.3) un atgriešanās vērtību izmanto kā otro parametru F1 funkciju - param1.2.
  3. Visbeidzot, tiek aprēķināts F1 (Param1, Param2, Param1,3) funkcija, un rezultāts tiek atgriezts zvanīšanas programmā.

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

Apsveriet pieprasījumu

select_day (Last_day (Sysdate) -7, 'TUE') no dubultā;

  1. Šajā vaicājumā trīs funkcijas, no zemākā līmeņa uz augšu - sysdate, last_day, next_day. Pieprasījumu veic šādi.
  2. Tiek veikta vislielākā sysdate funkcija. Tas atgriež pašreizējo sistēmas laiku. Pieņemsim, ka pašreizējais datums 2009. gada 28. oktobris
  3. Rezultāts ir otrā līmeņa funkcijas rezultāts last_day. Last_date ('28 -Oxt-2009 ') atgriež 2009. gada oktobra pēdējo dienu, tas ir, vērtība 2009. gada 31. oktobrī.
  4. Tad atņemšana notiek no šīs dienas septiņas dienas - izrādās 24. oktobrī.
  5. Un visbeidzot, tiek aprēķināts funkcija Next_day ('24 -OXT-2009 ',' TUE '), un pieprasījums atgriežas oktobra pēdējā otrdienā - ka mūsu piemērā 27-oktobris 2009.

Ir diezgan grūti saprast un veidot sarežģītas izteiksmes, izmantojot daudzas pievienotās funkciju problēmas, bet tas nāk ar laiku un praksi. Jūs varat lauzt šādus izteiksmes uz daļu un pārbaudīt atsevišķi. Tabula Dual ir ļoti noderīga Z.aprosov testēšanai un funkcijas funkcijas rezultātiem. Jūs varat pārbaudīt un atkļūdot nelielus komponentus, kas pēc tam apvieno vienā lielā vēlamā izteiksmē.

Filiāles funkcijas

Filiāles funkcijas, kas pazīstamas arī kā kaut kas citādi, tiek izmantota, lai noteiktu ieviešanas ceļu atkarībā no jebkādiem apstākļiem. Funkcijas filiāļu atgriež dažādus rezultātus, pamatojoties uz nekādu rezultātu, aprēķinot stāvokli. Šādu funkciju grupa piešķir funkcijas, kas darbojas ar nulles vērtību: NVL, NVL2, nullif un apvienojas. Un arī kopīgās iezīmes, ko pārstāv dekodēšanas funkcija un gadījumu izteiksme. Dekodēšanas funkcija ir Oracle funkcija, bet gadījumu izteiksme atrodas ANSI SQL standartā.

NVL funkcija

NVL funkcija pārbauda kolonnas vērtību vai izsaka jebkādu datu tipu null. Ja null - tas atgriež alternatīvu ne-nulles noklusējuma vērtību, pretējā gadījumā sākotnējā vērtība tiek atgriezta.

NVL funkcijai ir divi nepieciešamie parametri un NVL sintakse (oriģināls, IFNOLL), kur oriģināls ir sākotnējā vērtība pārbaudei, un IFNULL rezultāts tiek atgriezts ar funkciju, ja sākotnējā vērtība ir nulle. IFNULL un oriģinālo parametru tipam jābūt saderīgiem. Tas ir, vai nu datu tipam jābūt vienādam, vai vajadzētu būt iespējai netieša vērtību konvertēšana no viena veida uz citu. NVL funkcija atgriež to pašu datu tipa vērtību kā sākotnējā parametra datu tipu. Apsveriet trīs pieprasījumus

Vaicājums 1: izvēlieties NVL (1234) no dubultā;

Vaicājums 2: izvēlieties NVL (NULL, 1234) no dubultā;

Vaicājums 3: izvēlieties NVL (Substr ("ABC", 4), "nav substring pastāv") no dubultā;

Tā kā NVL funkcijām ir nepieciešami divi parametri, vaicājums 1 atgriezīs kļūda ORA-00909: nederīgs argumentu skaits. Pieprasījums 2 atgriezīsies 1234, jo nav pārbaudīta nulles vērtība, un tas ir nulle. Jautājums Trīs tiek izmantots ligzdots substr funkcija, kas mēģina izvēlēties ceturto raksturu no virknes trīs rakstzīmju garumā, atgriež nulles vērtību, un NVL funkcija atgriež "nav sbustring pastāv" virkne.

NVL funkcija ir ļoti noderīga, strādājot ar cipariem. To izmanto, lai pārvērstu nulles vērtības līdz 0 līdz aritmētiskās operācijas Nulls neatgriežas vairāk nekā skaitļi

NVL funkcija2

NVL2 funkcija nodrošina vairāk funkcionālāku nekā NVL, bet arī kalpo, lai apstrādātu nulles vērtību. Tā pārbauda kolonnas vērtību vai jebkāda veida izteicienus uz null. Ja vērtība nav vienāda ar , ir iesaistīts otrais parametrs, pretējā gadījumā trešais parametrs tiek atgriezts, atšķirībā no NVL funkcijas, kas šajā gadījumā atgriež sākotnējo vērtību.

NVL2 funkcijai ir trīs nepieciešamie parametri un NVL2 sintakse (oriģināls, iFNot, Ifnull), kur oriģināls ir derīga vērtība, ja oriģināls nav spēkā, un iFnull atgriezās gadījumā, ja oriģināls ir nulle. Ifnotnull un IFNULL parametru datu tipiem jābūt saderīgiem, un tie nevar būt gari. Datu veids NVL2 atgrieztās funkcijas ir vienāda ar datu tipu IFNotnull parametru. Apsveriet dažus piemērus

Vaicājums 1: izvēlieties NVL2 (1234, 1, "virkne") no dubultā;

Vaicājums 2: izvēlieties NVL2 (NULL, 1234, 5678) no dubultā;

Vaicājums 3: izvēlieties NVL2 (Substr ("ABC", 2), "ne BC", "nav substring") no dubultā;

Ifnotnull parametrs vaicājumā 1 ir numurs, un IFNULL parametrs ir virkne. Tā kā datu tipi nav saderīgi, kļūda "ORA-01722: nederīgs numurs" tiek atgriezts. Rinda divi atgriež iFnull parametru, jo oriģināls ir , un rezultāts būs 5678. Vaicājums trīs izmanto Substr funkciju, kas atgriež "BC" un zvanu NVL2 ("BC", "ne BC", "nav substring") - kas atgriežas iFnotnull parametrs - "ne BC".

NULLIF funkcija

NULLIF funkcija pārbauda divas identitātes vērtības. Ja tie ir vienādi - null tiek atgriezta citādi pirmais parametrs tiek atgriezts. NULLIF funkcijai ir divi obligāti parametri un sintakse nullif (iFunequal, salīdzinājums_item). Funkcija salīdzina divus parametrus un ja tie ir identiski - null tiek atgriezta, pretējā gadījumā iFunequal parametrs. Apsveriet pieprasījumus

Vaicājums 1: izvēlieties nullif (1234, 1234) no dubultā;

Pieprasījums atgriež nulli, jo parametri ir identiski. Rindas vaicājumā 2 netiek konvertētas uz datumu, bet tiek salīdzinātas kā līnijas. Tā kā dažādu garumu rindas - atgriež Ifunequal 24-Jūl-2009 parametru.

10-4. Attēls, NULF funkcija tiek ieguldīta NVL2 funkcijā. NumLF funkcijā, savukārt, substras un augšējās funkcijas tiek izmantotas kā daļa no izteiksmes iFunequal parametru. E-pasta kolonna tiek salīdzināta ar šo izteiksmi, kas atgriež pirmajā vārda vēstulē, vienojoties ar uzvārdu darbiniekiem, kuriem ir nosaukums 4 rakstzīmēs. Kad šīs vērtības ir vienādas, nullif atgriezīsies , ifunequal parametra vērtība atgriezīs vērtību. Šīs vērtības tiek izmantotas kā NVL2 funkcijas parametrs. NVL2 savukārt atgriež aprakstu par to, vai kompāni elementi sakrita vai nē.

10-4. Attēls - izmantojot nullif funkciju

AKCEĻA FUBKCIJĀ

AKOLUCES funkcija atgriež pirmo vērtību, kas nav vienāda ar null no parametru saraksta. Ja visi parametri ir nulles, null tiek atgriezta. Kalibrēšanas funkcijai ir divi nepieciešamie parametri un cik fakultatīvo parametru un akmeņu sintakse (EXPR1, EXPR2, ..., EXPRN), kur rezultāts ir EXPR1, ja EXPR 1H nulles vērtība, pretējā gadījumā rezultāts būs expr2, ja tas nav null utt. Sasaiste ir vienlīdz nozīmē NVL funkcijas

Apvienojas (EXPR1, EXPR2) \u003d NVL (EXPR1, EXPR2)

Apvienojas (EXPR1, EXPR2, EXPR3) \u003d NVL (Expr1, NVL (EXPR2, EXPR3))

Datu tipa atgriešanās vērtība Ja ne nulles nulles vērtība ir vienāda ar pirmā ne nulles vērtības datu tipu. Lai izvairītos no kļūdas "ORA-00932: nekonsekventiem datu tipiem", visiem, kas nav nulles parametri, jābūt saderīgiem ar pirmo, kas nav spēkā parametrs. Apsveriet trīs piemērus

Vaicājums 1: izvēlieties Coalesce (NULL, NULL, NULL, "virkne") no dubultā;

Vaicājums 2: izvēlieties Coalesce (NULL, NULL, NULL) no dubultā;

Vaicājums 3: izvēlieties Coalesce (Substr ("ABC", 4), "ne BC", "nav substring") no dubultā;

Pieprasījums 1 atgriež ceturto parametru: virkni, jo tas ir pirmais null parametrs. Vaicājums divi atgriež , jo visi parametri ir nulles. Pieprasījums 3 aprēķina pirmo parametru, saņem nulles vērtību un atgriež otro parametru, jo tas ir pirmais nav nulles parametrs.

NVL2 funkciju parametri var sajaukt, ja jūs jau esat iepazinušies ar NVL funkciju. NVL (oriģināls, IFNOLL) atgriež oriģinālu, ja vērtība nav , pretējā gadījumā IFNULL. NVL2 (oriģināls, Ifnot, Ifnull) atgriež iFnot, ja sākotnējā vērtība nav vienāda ar , izņemot IFNULL. Apjukums notiek sakarā ar to, ka otrais parametrs funkciju NVL IF, bet NVL2 ir Ifnotnull. Tāpēc nevēlaties novietot parametru funkciju.

Dekodēšanas funkcija

Dekodēšanas funkcijas darbarīki, ja-citādi-cits loģika. Pirmo divu parametru pārbaude uz vienu vienlīdzību un atgriežas trešā vērtība, ja vienlīdzība vai cita vērtība nevienlīdzības gadījumā. Dekodēšanas funkcijai ir trīs nepieciešamie parametri un sintakses dekode (Expr1, COMP1, IFTRUE1 ,,). Šie parametri tiek izmantoti, kā parādīts nākamajā pseido-koda piemērā.

Ja expr1 \u003d comp1, tad atgriezieties IFTRUE1

Citādi, ja expr1 \u003d comp2, tad atgriezieties IFTrue2

Citādi, ja exprn \u003d compn tad atgriezties iftruen

Cits atgriešanās null | Iffalse;

Sākumā Expr1 tiek salīdzināts ar COMP1. Ja tie ir vienādi ar vērtību IFTRUE1. Ja EXPR1 nav vienāds ar COMP1, tad tas, kas notiek tālāk, ir atkarīgs no tā, vai ir norādīti COMP2 un IFTRUE2 parametri. Ja komplekti ir iestatīti, Expr1 vērtība tiek salīdzināta ar COMP2. Ja vērtības ir vienādas, Iftrue2 tiek atgriezta. Ja nē, ja ir COMPN parametru pāri, IFTRUEN salīdzina Expr1 un Compn, un, ja IFTruen tiek atgriezts vienlīdzības gadījumā. Ja nevienā parametru kopumā nebija nejaušības, tad tas tiek atgriezts, ja šis parametrs ir iestatīts, vai null.

Visi parametri dekodēšanas funkcijā var būt izteiksmes. Atgrieztās vērtības veids ir vienāds ar pirmā pārbaudes elementa veidu - parametrucomp 1. Expr Expression 1 netieši konvertēts uz datu tipa COMP parametru1. Visas citas pieejamās COMP iespējas1 ... compn. Arī netieši pārveidots par comp tipu1. Dekodēt uzskata, ka nulles vērtība ir vienāda ar citu nulles vērtību, ti. Ja Expr1 ir nulle un comp3 ir , un COMP2 nav , tad IFTRUE3 vērtība tiek atgriezta. Apsveriet dažus piemērus

Vaicājums 1: izvēlieties dekodēšanu (1234, 123, '123 ir mačs) no dubultā;

Vaicājums 2: izvēlieties dekodēšanu (1234, 123, '123 ir mačs, "nav atbilstības") no dubultā;

Vaicājums 3: atlasiet dekodēšanu ("meklēšana", "COMP1", "TRUE1", "COMP2", "TRUE2", "meklēšana", "TRUE3", Substr ("2Search", 2, 6), "True4", " nepatiess ") no dubultā;

Pieprasījums salīdzina vērtību 1234 un 123. Tā kā tie nav vienādi, tad iftrue1 tiek ignorēts, un tā nav definēta, ja null tiek atgriezta. Vaicājums ir identisks vaicājumam 1, izņēmums, ka IFFALSE vērtība ir definēta. Kopš 1234 nav vienāds ar 123, IFFALSE tiek atgriezta - "nav atbilstības". Vaicājums Trīs pārbauda meklēšanas vērtības saskaņošanu parametru vērtības. COMP1 un COMP2 parametri nav vienādi ar "meklēšanu", tad iFtrue1 un iftrue2 rezultāti tiek izlaisti. Sekmīgums ir atrodams COMP3 elementa (parametra 6 pozīcijā) trešajā salīdzinājuma salīdzināšanā un IFTRUE3 vērtība (70) ir atgriezta, kas ir "True3". Tā kā sakritība nav konstatēta vairāk aprēķinu netiek veikti. Tas ir, neskatoties uz to, ka vērtība COMP4 (parametrs 8) arī sakrīt ar Expr1 - šī izteiksme nekad nav aprēķināta, jo sakritība tika konstatēta iepriekšējā salīdzinājumā.

Gadījumu izteiksme

Visas trešās un ceturtās paaudzes programmēšanas valodas īsteno lietas dizainu. Tāpat kā dekodēšanas funkcija, gadījumu izteiksme ļauj jums īstenot, ja-to-cits loģiku. Ir pieejamas divas iespējas izmantot gadījumu izteiksmes. Vienkārša gadījuma izteiksme nosaka avota elementu, lai salīdzinātu vienu reizi, un pēc tam uzskaita visus nepieciešamos verifikācijas nosacījumus. Komplekss (meklēts) lieta aprēķina abus uzņēmējus katram stāvoklim.

Gadījuma izteiksmē ir trīs obligātie parametri. Izteiksmes sintakse ir atkarīga no veida. Vienkāršam gadījumam viņš izskatās

Lieta search.expr.

Ja salīdzinājums_expr1 tad iftrue1

}