Մասնաճյուղի օպերատորները ընտրված հրամանով: NVL փոխարկում տվյալների տարբեր տեսակի լաբորատոր աշխատանքների համար

Գործառույթ To_char թվերով

Տվյալների փոխակերպումը գործում է տվյալների այլ տեսակների համար: To_char (համարը) մի շարք է վերածում տեքստի: To_number- ը տեքստը վերածում է համարի:

Ընտրեք To_Char (123) Dual- ից կվերադարձնի 123 տողը, ընտրեք To_number («12345») երկկողմանի վերադարձը կվերադարձնի թիվ 12345 համարը:

Լաբորատոր աշխատանք: Ելքային համարների ձեւաչափը փոխելը

Oracle SQL- ում թվային արժեքների ձեւաչափի փոփոխություններ, to_char գործառույթը `թվային արժեքներով աշխատելու համար:

Առաջադրանքը.

Գրեք հարցում, որը տեղեկատվություն կցուցադրի HR.EM գործի սեղանից աշխատողների անվան, ազգանունի եւ աշխատավարձի մասին, FIG- ում ներկայացված ձեւաչափով: 3.4-1:

ՆկՂ 3.4. -1

Միեւնույն ժամանակ, տվյալները պետք է դասակարգվեն այնպես, որ առաջին անգամ ցուցադրվեն մեծ աշխատավարձ ունեցող աշխատողների համար:

Նշում:

Որոշ աշխատավարձ, FIG- ում: 3.4-1-ը փոխվել են, այնպես որ նրանք գուցե չեն համընկնում ձեր արժեքների հետ:

Որոշում.

Ընտրեք առաջին_ անունը որպես «անուն», Last_Name որպես «ազգանուն», To_Char (աշխատավարձ, "L99999999999.99) որպես« աղցան », աշխատավարձի դասակարգում:

Գործառույթներ to_number եւ to_date

Row Conversion գործառույթը T_Date ամսաթվին (լարային, ձեւաչափ): Հնարավոր ձեւաչափերն արդեն դիտարկվում են վերեւում, ուստի ես կտամ այս գործառույթի օգտագործման որոշ օրինակներ: Օրինակներ.

Ընտրել To_date (01.01.2010, `DD.mm.yyyy) Ից Երկակի կվերադարձնի «01.01.2010» ամսաթիվը.

Ընտրել To_date (01.jan.2010, `dd.mon.yyyy) Ից Երկակի կվերադարձնի «01.01.2009» ամսաթիվը.

Ընտրել To_date ("15-01-10", «DD-MM-YY») Ից Երկակի կվերադարձնի «01/15/2010» ամսաթիվը:

Տողի փոխակերպումը գործում է թվային արժեքին to_number (լարային, ձեւաչափ): Ամենատարածված ձեւաչափերը նշված են աղյուսակում, ուստի հաշվի առեք այս գործառույթի օգտագործումը օրինակների վրա: Օրինակներ.

Ընտրել To_number (`100") Ից Կրկնակի կվերադարձնի թիվ 100 ընտրությունը (`0010.01," 9999D99) Ից Երկակի կվերադարձնի 10.01 համարը.

Ընտրել To_number ("500,000", "999g999") Ից Երկակի թիվը կվերադարձնի 500000 համարը:

Rr տարր ամսաթվերի ձեւաչափով

Ամսաթվի եւ ժամանակի ձեւաչափի տարրը նման է YY ամսաթվերի եւ ժամանակի ձեւաչափի տարրին, բայց այն տրամադրում է լրացուցիչ ճկունություն `ամսաթվի արժեքները պահելու եւ այլ դարերում: RR ամսաթվերի եւ ժամանակի ձեւաչափի տարրը թույլ է տալիս 21-րդ դարում պահել 20-րդ դարի ամսաթվերը, նշելով տարվա երկու վերջին թվանշանները:

Եթե \u200b\u200bընթացիկ տարվա վերջին երկու թվերը 00-ից 49 են, վերադարձի տարին ունի նույն առաջին երկու թվանշանները, ինչպես ընթացիկ տարում:

Եթե \u200b\u200bընթացիկ տարվա վերջին տարվա երկու վերջին ցուցանիշները, 50-ից 99-ը, վերադարձված տարվա առաջին 2 թվանշաններն են 1-ը, քան ընթացիկ տարվա առաջին 2 թվանշաններում:

Եթե \u200b\u200bընթացիկ տարվա երկու վերջին գործիչները 00-ից 49 են, վերադարձված տարվա առաջին 2 թվանշաններն ընթացիկ տարվա առաջին 2 թվանշաններից 1-ից պակաս են:

Եթե \u200b\u200bընթացիկ տարվա երկու վերջին ցուցանիշները 50-ից 99-ը, ապա վերադարձված տարին նույն առաջին երկու թվանշանն ունի, ինչպես ընթացիկ տարում:

NVL առանձնահատկություն

NVL գործառույթը սովորաբար կիրառվում է առավել հաճախ: Գործառույթը ստանում է երկու պարամետր, NVL (EXPR1, Exerg2): Եթե \u200b\u200bառաջին Expr1 պարամետրը զրոյական հավասար չէ, ապա գործառույթը վերադարձնում է իր արժեքը: Եթե \u200b\u200bառաջին զրոյական պարամետրը, ապա գործառույթը վերադարձնում է Exerg2- ի երկրորդ պարամետրերի արժեքը:

Օրինակ. Մատակարարներից ընտրեք NVL (մատակարար_City, N / A "):

SQL հայտարարությունը կվերադառնա N / «Եթե մատակարարի_Կիտյան դաշտը պարունակում է զրոյական արժեք: Հակառակ դեպքում, այն կվերադարձնի արժեքի մատակարարը_city:

Oracle / Plsql- ում NVL գործառույթը օգտագործելու եւս մեկ օրինակ է.

sELECTIVER_ID, NVL (մատակարար_ DESC, մատակարար (մատակարար) մատակարարներից:

Այս SQL ծրագիրը կվերադառնա Մատակարար_name. Դաշտ, եթե Մատակարար_desc. պարունակում է զրոյական արժեք: Հակառակ դեպքում նա կվերադառնա Մատակարար_desc..

Վերջին օրինակը. Oracle / PlsQL- ում NVL գործառույթի օգտագործումը հետեւյալն է. Ընտրեք NVL (Հանձնաժողով, 0) վաճառքից.

Այս SQL հայտարարությունը վերադարձավ 0-ին, եթե երաշխիք Դաշտը պարունակում է զրոյական արժեք: Հակառակ դեպքում հնարավոր կլինի վերադառնալ Երաշխիք դաշտ

NVL փոխարկում տվյալների տարբեր տեսակների համար

Իրական գործառույթին անվայել արժեքը վերափոխելու համար օգտագործվում է NVL գործառույթը. NVL ( expression1, Expression 2), Որտեղ.

արտահայտություն 1- Աղբյուր կամ հաշվարկված արժեք, որը կարող է անորոշ լինել:

արտահայտություն 2. - արժեք, որը փոխարինվում է անորոշ արժեքի փոխարեն:

Նշում: NVL գործառույթը կարող է օգտագործվել ցանկացած տեսակի տվյալներ փոխարկելու համար, բայց արդյունքը միշտ կլինի նույն տիպը, որքան արտահայտություն 1.

NVL փոխարկում տարբեր տեսակի.

Համար - NVL: (թվային սյուն, 9).

Char կամ varchar2 - nvl (Խորհրդանիշներ | սյուն, "Անհասանելի").

Լաբորատոր աշխատանք: NVL գործառույթի կիրառում

NVL առանձնահատկություն `Oracle SQL- ում անորոշ արժեքներով աշխատելու համար:

Առաջադրանքը.

Գրեք հարցում, որը ցուցադրում է տեղեկատվություն HR.EMlIES աղյուսակի անձնակազմի անվան եւ ազգանունի մասին: Միեւնույն ժամանակ, այն աշխատողների համար, որոնց համար հանձնաժողովը սահմանված չէ, անհրաժեշտ է ցուցադրել 0. Հարցման արդյունքը, ինչպես ներկայացված է Նկարում: 3.5-1:

ՆկՂ 3.5 -1 (արժեքները սկսվում են 51 տողից)

Որոշում.

Համապատասխան պահանջի ծածկագիրը կարող է լինել.

Ընտրեք First_Name- ը որպես «անուն», Last_Name որպես «ազգանուն», NVL (Հանձնաժողով_ PCT, 0) որպես «Հանձնաժողովի տոկոսադրույք»:

NVL առանձնահատկություն

NVL գործառույթը սովորաբար կիրառվում է առավել հաճախ: Գործառույթը ստանում է երկու պարամետր, NVL (EXPR1, EXPR2): Եթե \u200b\u200bառաջին Expr1 պարամետրը զրոյական հավասար չէ, ապա գործառույթը վերադարձնում է իր արժեքը: Եթե \u200b\u200bառաջին զրոյական պարամետրը, ապա գործառույթը վերադարձնում է Expr2- ի երկրորդ պարամետրերի արժեքը:

Նկատի առնել Գործնական օրինակը, EMP աղյուսակում գտնվող Comm դաշտը կարող է պարունակել զրոյական արժեքներ: Ձեւի հարցումը կատարելիս.

Ընտրեք EMPNO, Ename, Comm, NVL (COMM, 0) NVL_COMM

Scott.Emp- ից

null արժեքը կփոխարինվի զրոյով: Խնդրում ենք նկատի ունենալ, որ գործառույթի օգնությամբ արժեքի ձեւավորման դեպքում այն \u200b\u200bնշանակվում է կեղծանուն: Հայցի արդյունքները կլինեն.

Empno. Ընդունել: Կոմպրես Nvl_comm
7369 Ձի 0
7499 Ալեն 300 300
7521 Սպասք 500 500
7566 Jones 0
7654 Մարտին 1400 1400
7698 Շեղել 0
7782 Քլարկ: 0
7839 Քինգ 0
7844 Այրել 0 0
7900 Եյմս. 0
7902 Ֆորդ 0
7934 Ջրաղացարան 0

CEIL (N)

CEIL գործառույթը վերադարձնում է ամենափոքր ամբողջ թվերը, ավելի մեծ կամ հավասար է N.- ի թվին: Օրինակ:

Ընտրեք CEIL (100) x1, CEIL (-100) X2, CEIL (100.2) x3, CEIL (-100.2) x4

Երկակիից

Trunc Forctunt (N [, M])

Trunc- ի գործառույթը տասնորդական կետից հետո վերադարձնում է M նշանների կրճատված համարը: Մ-ի պարամետրը չի կարող նշվել `այս դեպքում n կրճատվել է ամբողջը:

Ընտրեք Trunc (100.25678) X1, Trunc (-100.25678) X2, Trunc (100.99) x3,

Trunc (100.25678, 2) x4

Երկակիից

Գրանցվել (ն) գործառույթ

Գրանցման գործառույթը որոշում է թվերի քանակը: Եթե \u200b\u200bn- ը դրական է, ապա գործառույթը վերադառնում է 1. Եթե բացասական վերադարձվում է -1: Եթե \u200b\u200bզերը զրոյի է, ապա 0-ը վերադարձվում է: Օրինակ:

Ընտրեք նշան (100.22) x1, նշան (-100.22) x2, նշան (0) x3

Երկակիից

Այս հատկության հետաքրքիր առանձնահատկությունն է M հավասար փոխանցման հնարավորությունը `զրոյի. Այն չի առաջանում բաժնի սխալները 0-ով:

Power (N, M) գործառույթ

Էլեկտրաէներգիայի գործառույթը կազմում է n համարի մ. Աստիճանը կարող է լինել կոտորակ եւ բացասական, ինչը էապես ընդլայնում է այս գործառույթի հնարավորությունները:

Ընտրեք Power (10, 2) x1, Power (100, 1/2) x2,

Power (1000, 1/3) x3, Power (1000, -1/3) x4

Երկակիից

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

Որոշ դեպքերում, այս հատկությունը զանգահարելիս կարող է տեղի ունենալ բացառություն: Օրինակ:

Ընտրեք Power (-100, 1/2) x2

Երկակիից

Մեջ Այս դեպքը Փորձ է արվում բացասական թվից քառակուսի արմատը հաշվարկելու համար, ինչը կհանգեցնի ORA-01428 սխալի «փաստարկը միջակայքում»:

SQRT (N) գործառույթ

Այս հատկությունը վերադառնում է Քառակուսի արմատ n համարից: Օրինակ:

Ընտրեք SQRT (100) x

Երկակիից

Գործառույթները Exp (n) եւ ln (n)

Exp գործառույթը E- ի աստիճանի n աստիճանով, իսկ LN գործառույթը հաշվարկում է N (N- ով n- ով) բնական լոգարիթմը (n- ով) պետք է լինի ավելի մեծ, քան զրոյից): Օրինակ:

Ընտրեք EXP (2) x1, ln (1) x2, ln (exp (2)) x3

NVL առանձնահատկություն

NVL գործառույթը սովորաբար կիրառվում է առավել հաճախ: Գործառույթը ստանում է երկու պարամետր, NVL (EXPR1, EXPR2): Եթե \u200b\u200bառաջին Expr1 պարամետրը զրոյական հավասար չէ, ապա գործառույթը վերադարձնում է իր արժեքը: Եթե \u200b\u200bառաջին զրոյական պարամետրը, ապա գործառույթը վերադարձնում է Expr2- ի երկրորդ պարամետրերի արժեքը:

Հաշվի առնել գործնական օրինակը: EMP աղյուսակում գտնվող Comm դաշտը կարող է պարունակել զրոյական արժեքներ: Ձեւի հարցումը կատարելիս.

Ընտրեք EMPNO, Ename, Comm, NVL (COMM, 0) NVL_COMM

Scott.Emp- ից

null արժեքը կփոխարինվի զրոյով: Խնդրում ենք նկատի ունենալ, որ գործառույթի օգնությամբ արժեքի ձեւավորման դեպքում այն \u200b\u200bնշանակվում է կեղծանուն: Հայցի արդյունքները կլինեն.

Empno. Ընդունել: Կոմպրես Nvl_comm
7369 Ձի 0
7499 Ալեն 300 300
7521 Սպասք 500 500
7566 Jones 0
7654 Մարտին 1400 1400
7698 Շեղել 0
7782 Քլարկ: 0
7839 Քինգ 0
7844 Այրել 0 0
7900 Եյմս. 0
7902 Ֆորդ 0
7934 Ջրաղացարան 0

CEIL (N)

CEIL գործառույթը վերադարձնում է ամենափոքր ամբողջ թվերը, ավելի մեծ կամ հավասար է N.- ի թվին: Օրինակ:

Ընտրեք CEIL (100) x1, CEIL (-100) X2, CEIL (100.2) x3, CEIL (-100.2) x4

Երկակիից

Trunc Forctunt (N [, M])

Trunc- ի գործառույթը տասնորդական կետից հետո վերադարձնում է M նշանների կրճատված համարը: Մ-ի պարամետրը չի կարող նշվել `այս դեպքում n կրճատվել է ամբողջը:

Ընտրեք Trunc (100.25678) X1, Trunc (-100.25678) X2, Trunc (100.99) x3,

Trunc (100.25678, 2) x4

Երկակիից

Գրանցվել (ն) գործառույթ

Գրանցման գործառույթը որոշում է թվերի քանակը: Եթե \u200b\u200bn- ը դրական է, ապա գործառույթը վերադառնում է 1. Եթե բացասական վերադարձվում է -1: Եթե \u200b\u200bզերը զրոյի է, ապա 0-ը վերադարձվում է: Օրինակ:

Ընտրեք նշան (100.22) x1, նշան (-100.22) x2, նշան (0) x3

Երկակիից

Այս հատկության հետաքրքիր առանձնահատկությունն է M հավասար փոխանցման հնարավորությունը `զրոյի. Այն չի առաջանում բաժնի սխալները 0-ով:

Power (N, M) գործառույթ

Էլեկտրաէներգիայի գործառույթը կազմում է n համարի մ. Աստիճանը կարող է լինել կոտորակ եւ բացասական, ինչը էապես ընդլայնում է այս գործառույթի հնարավորությունները:

Ընտրեք Power (10, 2) x1, Power (100, 1/2) x2,

Power (1000, 1/3) x3, Power (1000, -1/3) x4

Երկակիից

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

Որոշ դեպքերում, այս հատկությունը զանգահարելիս կարող է տեղի ունենալ բացառություն: Օրինակ:

Ընտրեք Power (-100, 1/2) x2

Երկակիից

Այս դեպքում փորձ է արվում բացասական թվից քառակուսի արմատը հաշվարկելու համար, որը տեղի կունենա ORA-01428 «փաստարկը սահմաններից դուրս» սխալը:

SQRT (N) գործառույթ

Այս գործառույթը ավելացնում է քառակուսի արմատը n համարից: Օրինակ:

Ընտրեք SQRT (100) x

Երկակիից

Գործառույթները Exp (n) եւ ln (n)

Exp գործառույթը E- ի աստիճանի n աստիճանով, իսկ LN գործառույթը հաշվարկում է N (N- ով n- ով) բնական լոգարիթմը (n- ով) պետք է լինի ավելի մեծ, քան զրոյից): Օրինակ:

Ընտրեք EXP (2) x1, ln (1) x2, ln (exp (2)) x3

Ներդրված գործառույթներ, որոնք մենք մի փոքր ավելի շուտ շոշափեցինք, հիմա նրանց մի փոքր ավելի մանրամասն դիտարկենք: Մենք կքննարկենք նաեւ զրոյական եւ գործառույթների արժեքի հետ աշխատելու գործառույթը, որոնք օգնում են իրականացնել մասնաճյուղի շահագործումը:

Տեղակայված գործառույթներ

Տեղակայված գործառույթներ Ես օգտագործում եմ մեկ գործառույթի վերադարձված արժեքը, որպես մուտքային պարամետր մեկ այլ գործառույթի համար: Գործառույթները միշտ վերադառնում են միայն մեկ արժեք: Հետեւաբար, գործառույթի գործառույթի արդյունքը կարող եք համարել որպես բառացի արժեք, երբ այն օգտագործում եք որպես զանգի պարամետր մեկ այլ գործառույթ: Գծի գործառույթները կարող են կցվել բույնի ցանկացած մակարդակի վրա: Զանգահարեք մեկ գործառույթ, կարծես

Գործառույթ 1 (պարամետր 1, պարամետր 2, ...) \u003d Արդյունք

Գործառույթի պարամետրը մեկ այլ գործառույթ զանգահարելը փոխարինելը կարող է հանգեցնել տեսակների տեսքի

F1 (Param1.1, F2 (Param2.1, Param2.2, F3 (Param3.1), Param1.3)

Սկզբում բույնի գործառույթները հաշվարկվում են, նախքան դրանց արդյունքների օգտագործումը որպես այլ գործառույթների համար մուտքային արժեքներ: Գործառույթները հաշվարկվում են բույնի ամենախոր մակարդակից մինչեւ վերին աջ աջ: Նախորդ արտահայտությունը կատարվում է հետեւյալ կերպ

  1. Գծապատկեր F3 (Param1) հաշվարկվում է, եւ վերադարձի արժեքը օգտագործվում է որպես «Ֆունկցիայի 2-րդ պարամետր», եկեք այն անվանենք Param2.3
  2. F2 գործառույթը հաշվարկվում է (Param1, Param2.2, Param2.3), իսկ վերադարձի արժեքը օգտագործվում է որպես F1 երկրորդ պարամետր F1 գործառույթ - Param1.2:
  3. Վերջապես, հաշվարկվում է F1 (Param1, Param2, Param1.3) գործառույթը, եւ արդյունքը վերադարձվում է զանգահարման ծրագրին:

Այսպիսով, F3 գործառույթը գտնվում է բույնի երրորդ մակարդակում:

Դիտարկենք հարցումը

select_day (last_day (sysdate) -7, «Tue») երկակի;

  1. Այս հարցումում երեք գործառույթներ, ստորին մակարդակից մինչեւ վերեւ - sysdate, last_day, next_day. Հայցը կատարվում է հետեւյալ կերպ.
  2. Կատարվում է առավել տեղավորվող Sysdate գործառույթը: Այն վերադարձնում է համակարգի ընթացիկ ժամանակը: Ենթադրենք, որ ընթացիկ ամսաթիվը 2009 թ. Հոկտեմբերի 28-ին
  3. Արդյունքը երկրորդ մակարդակի գործառույթի արդյունքն է Last_Day- ի: Last_date ('28 -Ox-2009 ") Վերադարձնում է 2009 թվականի հոկտեմբերի վերջին օրը, այսինքն, 2009 թվականի հոկտեմբերի 31-ի արժեքը:
  4. Այնուհետեւ հանում է յոթ օրվա այս օրվանից `պարզվում է հոկտեմբերի 24-ին:
  5. Վերջապես, հաշվարկվում է գործառույթը NEXT_DAY ('24 -Ox -2009 ",« TUE »), իսկ հարցումը վերադառնում է հոկտեմբերի վերջին երեքշաբթի. Դա մեր օրինակով, 27-հոկտեմբերի 2009 թ.

Բավականին հասկանալի արտահայտություններ հասկանալն ու կառուցումը շատ դժվար է, օգտագործելով գործառույթների շատ կից մարտահրավերներ, բայց դա գալիս է ժամանակի եւ պրակտիկայի հետ: Դուք կարող եք այդպիսի արտահայտություններ կոտրել մասի վրա եւ առանձին թեստավորել: Սեղանի երկակի շատ օգտակար է Z.Aprosov- ի փորձարկման եւ գործառույթի գործառույթի արդյունքների համար: Կարող եք փորձարկել եւ կարգաբերել փոքր բաղադրիչներ, որոնք այնուհետեւ համատեղվում են մեկ մեծ ցանկալի արտահայտության մեջ:

Մասնաճյուղի գործառույթներ

Մասնաճյուղի գործառույթները, ինչպես նաեւ ինչ-որ բան, այլ կերպ, օգտագործվում է ցանկացած հանգամանքից `կախված ցանկացած հանգամանքից: Մասնաճյուղի գործառույթները վերադառնում են տարբեր արդյունքներ, հիմնվելով պայմանը հաշվարկելու արդյունքում: Նման գործառույթների խումբը հատկացնում է NULL- ի արժեքի հետ աշխատելու գործառույթներ. NVL, NVL2, NULLIF եւ COADESCE: Եվ նաեւ ընդհանուր հատկությունները, որոնք ներկայացված են վերծոդի գործառույթով եւ գործի արտահայտությամբ: Դեկոդի գործառույթը Oracle գործառույթ է, մինչդեռ գործի արտահայտությունը առկա է ANSI SQL ստանդարտում:

NVL առանձնահատկություն

NVL գործառույթը ստուգում է սյունակի արժեքը կամ որեւէ տվյալների տիպ է արտահայտում զրոյական: Եթե \u200b\u200bզրոյական. Այն վերադարձնում է այլընտրանքային ոչ զրոյական լռելյայն արժեք, հակառակ դեպքում նախնական արժեքը վերադարձվում է:

NVL գործառույթն ունի երկու պահանջվող պարամետր եւ NVL շարահյուսություն (բնօրինակ, ifnull), որտեղ բնօրինակը գործառույթի միջոցով վերադարձվել է ստուգման եւ IFNUL արդյունքի բնօրինակ արժեքը, եթե սկզբնական արժեքը զրոյական է: IFNull- ի եւ բնօրինակ պարամետրերի տվյալների տեսակը պետք է համատեղելի լինի: Այսինքն, կամ տվյալների տեսակը պետք է լինի նույնը կամ պետք է լինի արժեքների ենթադրյալ փոխակերպման հնարավորությունը մեկ տեսակից մյուսը: NVL գործառույթը վերադարձնում է նույն տվյալների տիպի արժեքը, որպես բնօրինակ պարամետրերի տվյալների տեսակը: Դիտարկենք երեք հարցում

Հարց 1. Ընտրեք NVL (1234) երկակի;

Հարց 2. Ընտրեք NVL (NULL, 1234) DUAL;

Հարց 3. Ընտրեք NVL (Substr ('ABC', 4), «Ոչ մի ենթաշերտ գոյություն չունի») երկակիից.

Քանի որ NVL գործառույթները պահանջում են երկու պարամետր, հարցումը 1-ը կվերադարձնի ORA-00909 սխալը. Փաստարկների անվավեր քանակը: Հայցել 2-ը կվերադառնա 1234-ը, քանի որ զրոյական արժեքը ստուգվում է, եւ դա զրոյական է: Հարց երեքը օգտագործվում է NEDED SUPTR գործառույթ, որը փորձում է երեք նիշից տողից ընտրելու չորրորդ կերպարը, վերադառնում է զրոյական արժեքը, եւ NVL գործառույթը վերադառնում է «Ոչ մի sbustring գոյություն չունի»:

NVL գործառույթը շատ օգտակար է թվերի հետ աշխատելիս: Այն օգտագործվում է զրոյական արժեքները 0-ից վերափոխելու համար Թվաբանական գործողություններ Nulls- ը չի վերադարձել թվերը

NVL առանձնահատկություն2

NVL2 գործառույթը ապահովում է ավելի շատ ֆունկցիոնալ, քան NVL- ն, բայց նաեւ ծառայում է `զրոյական արժեքը մշակելու համար: Այն ստուգում է սյունակի արժեքը կամ որեւէ տեսակի զրոյական արտահայտություններ: Եթե \u200b\u200bարժեքը հավասար չէ զրոյականին, ապա երկրորդ պարամետրը ներգրավված է, հակառակ դեպքում երրորդ պարամետրը վերադարձվում է, ի տարբերություն NVL գործառույթի, որն այս դեպքում վերադարձնում է նախնական արժեքը:

NVL2 գործառույթն ունի երեք պահանջվող պարամետրեր եւ NVL2 շարահյուսություն (բնօրինակ, ifnot, ifnull), որտեղ բնօրինակը վավեր արժեք է, եթե բնօրինակը վերադառնում է, եթե բնօրինակը վերադառնում է: IfnotNull- ի եւ IFNull պարամետրերի տվյալների տեսակները պետք է համատեղելի լինեն, եւ դրանք չեն կարող երկար ժամանակ տրամադրել: NVL2 վերադարձված գործառույթի տվյալների տեսակը հավասար է iNNotNull պարամետրերի տվյալների տիպին: Դիտարկենք մի քանի օրինակ

Հարց 1. Ընտրեք NVL2 (1234, 1, «լար») երկակի;

Հարց 2. Ընտրեք NVL2 (NULL, 1234, 5678) երկակի;

Հարց 3. Ընտրեք NVL2 (Suptr ('ABC', 2), «ոչ մ.թ.ա.,« ոչ մի ենթավորություն ») երկակիից.

Հարցման 1-ի IFNOLNUL պարամետրը համարն է համարը, իսկ IFNULL պարամետրը լարային է: Քանի որ տվյալների տեսակները անհամատեղելի են, վերադարձվում է «ORA-01722. Անվավեր համարը» սխալը: Հերթը երկու վերադառնում է ifnull պարամետրը, քանի որ բնօրինակը զրոյական է, եւ արդյունքը կլինի 5678: Հարցումը երեքն է օգտագործում «մ.թ.ա.,« ոչ մ.թ. ifnotnull պարամետր - «Ոչ մ.թ.ա.»:

Nullif գործառույթ

Nullif գործառույթը ստուգում է ինքնության երկու արժեք: Եթե \u200b\u200bդրանք նույնն են, զրոյականը վերադարձվում է, հակառակ դեպքում առաջին պարամետրը վերադարձվում է: Nullif գործառույթը ունի երկու պարտադիր պարամետր եւ շարահյուսական Nullif (IFUNEQUAL, Comparool_item): Գործառույթը համեմատում է երկու պարամետր, եւ եթե դրանք նույնական են. Զրնարկվում է, հակառակ դեպքում եթե ifuunequal պարամետրը: Դիտարկենք հարցումները

Հարց 1. Ընտրեք Nullif (1234, 1234) երկկողմանի;

Հայցը վերադառնում է զրոյական, քանի որ պարամետրերը նույնական են: Query 2-ում տողերը չեն վերածվում ամսաթվի, բայց համեմատվում են որպես տողեր: Քանի որ տարբեր երկարությունների շարքեր - վերադարձնում են IFUNEQUIL 24-Հուլ-2009 պարամետրը:

Գծապատկեր 10-4, NULLIF գործառույթը ներդրվում է NVL2 գործառույթում: Nullif գործառույթում, իր հերթին, suptr- ը եւ վերին գործառույթները օգտագործվում են որպես IFUNEQUAL պարամետրում արտահայտության մաս: Էլ.փոստի սյունը համեմատվում է այս արտահայտության հետ, որը վերադարձնում է անվան առաջին տառը, միավորված է ազգանունով `4 նիշով անուն ունեցող աշխատողների համար: Երբ այդ արժեքները հավասար են, Nullif- ը կվերադառնա զրոյական, եթե ifuunequal պարամետրը վերադարձնի արժեքը: Այս արժեքներն օգտագործվում են որպես NVL2 գործառույթի պարամետր: NVL2- ն իր հերթին վերադառնում է նկարագրությունը, թե արդյոք համադրելի տարրերը համընկնում են, թե ոչ:

Նկար 10-4 - օգտագործելով Nullif գործառույթը

Կովսի գործառույթ

Կովսի գործառույթը վերադառնում է առաջին արժեքը, որը հավասար չէ անվավեր պարամետրերի ցուցակից: Եթե \u200b\u200bբոլոր պարամետրերը զրոյական են, զրոյականը վերադարձվում է: Կովկաստանային գործառույթն ունի երկու պահանջվող պարամետր եւ քանի կամընտիր պարամետրեր եւ հատակների շարահյուսություն (Expr1, Expr2, ..., exprn), որտեղ արդյունքը Expr1 է, եթե դա ոչ մի դեպքում արդյունքը չի լինի եւ այլն Կովկասը հավասարապես իմաստ ունի NVL գործառույթների

Կովեք (Expr1, Expr2) \u003d NVL (Expr1, Expr2)

Կովեք (Expr1, Expr2, EXPR3) \u003d NVL (Expr1, NVL (Expr2, Expr3))

Տվյալների տիպի վերադարձի արժեքը, եթե Null Null արժեքը հավասար է առաջինի տվյալների տեսակը, որը ոչ անվավեր արժեքի է: «ORA-00932» սխալներից խուսափելու համար բոլոր ոչ զրոյական պարամետրերը պետք է համատեղելի լինեն առաջին ոչ ավելի զրոյական պարամետրերի հետ: Դիտարկենք երեք օրինակ

Հարց 1. Ընտրեք Կովկասը (NULL, NULL, NULL, «լարային») երկակի;

Հարց 2. Ընտրեք Coalesce (NULL, NULL, NULL) DUAL;

Հարց 3. Ընտրեք Կովկասը (Suptr ('ABC', 4), «ոչ մ.թ.ա.,« ոչ մի ենթավորություն ») երկակիից.

Հայց 1-ը վերադարձնում է չորրորդ պարամետրը. Լարային, քանի որ սա առաջին զրոյական պարամետրն է: Հարցումը երկու անգամ վերադարձնում է զրոյական, քանի որ բոլոր պարամետրերը զրոյական են: Հայցել 3-ը հաշվարկում է առաջին պարամետրը, ստանում է անվավեր արժեքը եւ վերադարձնում երկրորդ պարամետրը, քանի որ այն առաջին չէ, որ ոչ ավելի զրոյական պարամետրն է:

NVL2 գործառույթի պարամետրերը կարող են շփոթել, եթե արդեն ծանոթ եք NVL գործառույթին: NVL (բնօրինակ, ifnull) վերադառնում է բնօրինակ, եթե արժեքը զրոյական չէ, այլապես ifnull: NVL2 (բնօրինակը, ifnotl, ifnull) վերադառնում է ifn, եթե սկզբնական արժեքը հավասար չէ NULL- ին, քան ifnull- ը: Խառնաշփոթը տեղի է ունենում այն \u200b\u200bպատճառով, որ գործառույթի երկրորդ պարամետրը NVL IFNULL, մինչդեռ NVL2- ը iNNONTNULL է: Այնպես որ, հույս չկա, որ պարամետրը տեղադրի գործառույթում:

Վերծոդի առանձնահատկությունը

Վերծոդի գործառույթը իրականացնում է եթե այլ տրամաբանությունը: Առաջին երկու պարամետրերը ստուգում են յուրաքանչյուր հավասարության եւ երրորդ արժեքը `իրենց հավասարության կամ մեկ այլ արժեքի դեպքում` անհավասարության դեպքում: Դեկոդի գործառույթը ունի երեք պահանջվող պարամետր եւ շարահյուսության կետ (EXPR1, Comp1, Iftrue1 ,,): Այս պարամետրերը օգտագործվում են, ինչպես ցույց է տրված հետեւյալ կեղծ կոդով օրինակով:

Եթե \u200b\u200bexpr1 \u003d comp1 ապա վերադարձեք IFTRUE1

Այլապես, եթե expr1 \u003d comp2, ապա վերադարձեք IFTRUE2

Այլապես, եթե exprn \u003d compn, ապա վերադարձրեք FeRstruen

Էլի վերադարձը զրոյական | IFFALSE;

Սկզբում Expr1- ը համեմատվում է կոմպիլի հետ: Եթե \u200b\u200bդրանք հավասար են iftrue1- ի արժեքին: Եթե \u200b\u200bExpr1- ը հավասար չէ Comp1- ին, ապա այն, ինչ տեղի է ունենում հետագայում, կախված է նրանից, թե նշվում են Համակցման եւ IFTRUE2- ի պարամետրերը: Եթե \u200b\u200bհավաքածուներ են սահմանված, EXPR1 արժեքը համեմատվում է Համակցման հետ: Եթե \u200b\u200bարժեքները հավասար են, ապա եթե 2-ը վերադարձվում է: Եթե \u200b\u200bոչ, եթե կան Compn Parameter զույգեր, ապա FeRtruen- ը համեմատում է EXPR1- ի եւ Compn- ին, եւ եթե եթե եթե եթե մթերք ունենան, եթե մթերքները վերադարձվեն հավասարության դեպքում: Եթե \u200b\u200bպարամետրերի որեւէ շարքում պատահականություն չլիներ, ապա այն վերադարձվում է, եթե այս պարամետրը սահմանվի, կամ զրոյական:

Դեկոդի գործառույթի բոլոր պարամետրերը կարող են արտահայտություններ լինել: Վերադարձված արժեքի տեսակը հավասար է առաջին ստուգման տարրի տիպին `պարամետրըcomp 1. expr արտահայտություն 1 ենթադրաբար փոխարկվել է կոմպի պարամետրերի տվյալների տեսակը1. Բոլոր մատչելի կոմպակտների բոլոր տարբերակները1 ... Համաձայն: Նաեւ ենթադրաբար վերածվել է կոմպի տիպի1. Դեկոդը զրոյական արժեքը համարում է հավասարապես մեկ այլ զրոյական արժեքի, այսինքն: Եթե \u200b\u200bExpr1- ը զրոյական է, եւ comp3- ը զրոյական է, եւ comp2- ը զրոյական չէ, ապա վերադարձվում է IFTREA3 արժեքը: Դիտարկենք մի քանի օրինակ

Հարց 1. Ընտրեք վերծոդը (1234, 123, '123-ը խաղ է) երկակիից.

Հարց 2. Ընտրեք վերծոդը (123, 123, «123-ը խաղ է», «ոչ մի համընկնում») երկակիից.

Հարց 3. Ընտրեք վերծանելը («Որոնում», 'comp1', 'inect1', 'true2', 'true2', 'true4', 2, 6), 'true4', կեղծ ») երկակիից;

Հարցումը Մեկը համեմատում է 1234 եւ 123 արժեքի արժեքը: Քանի որ դրանք հավասար չեն, ապա FeRtrue1- ը անտեսվում է, եւ քանի որ այն չի սահմանվում, եթե չվերադարձվի: Հարցումը նույնական է հարցման 1-ի հետ, բացառություն, որ սահմանվում է IFFALSE արժեքը: 1234 թվականից 123-ին հավասար չէ, եթե մթնոլորտը վերադարձվի. «Ոչ մի համընկնում»: Հարցումը երեքը ստուգում է որոնման արժեքը համապատասխանելու պարամետրային արժեքները: Comp1- ի եւ Comp2- ի պարամետրերը հավասար չեն «որոնման», հետեւաբար, IFTRE1- ի եւ IFTRUE2- ի արդյունքները բաց են թողնվել: Պատահականությունը հայտնաբերվում է Comp3- ի համեմատության երրորդ համեմատության մեջ (պարամետր 6-րդ դիրքը) եւ IFTRE3 արժեքը (պարամետր 7) վերադարձվում է, որը «իրական 3» է: Քանի որ զուգադիպությունը հայտնաբերվում է, որ ավելի շատ հաշվարկներ չեն արվում: Այսինքն, չնայած այն հանգամանքին, որ Համեմատության արժեքը (պարամետր 8) նույնպես համընկնում է EXPR1- ի հետ. Այս արտահայտությունը երբեք չի հաշվարկվում, քանի որ նախորդ համեմատության մեջ հայտնաբերվել է համընկնում:

Գործի արտահայտություն

Բոլոր երրորդ եւ չորրորդ սերնդի ծրագրավորման լեզուները իրականացնում են գործի ձեւավորումը: Դեկոդի ֆունկցիայի նման, գործի արտահայտությունը թույլ է տալիս իրականացնել IF-THE- ԱՅԼ տրամաբանություն: Գործի արտահայտությունը օգտագործելու երկու տարբերակ մատչելի են: Պարզ դեպքի արտահայտությունը սահմանում է աղբյուրի տարրը `համեմատելու մեկ անգամ, այնուհետեւ ցուցակագրում է բոլոր անհրաժեշտ ստուգման պայմանները: Համալիր (որոնում) գործը հաշվարկում է երկու օպերատորներին յուրաքանչյուր պայմանի համար:

Գործի արտահայտությունն ունի երեք պարտադիր պարամետր: Արտահայտության շարահյուսությունը կախված է տեսակից: Արտահայտման պարզ դեպքի համար նա նման է

Գործի որոնում_EXPR:

Երբ համեմատական_ExPR1, ապա FeTrue1

}