Մասնաճյուղերի հայտարարություններ SELECT հրամանում: NVL փոխակերպումներ տարբեր Nvl sql տվյալների տեսակների նկարագրության համար

NVL ֆունկցիա

NVL ֆունկցիան, ընդհանուր առմամբ, ամենատարածվածն է: Ֆունկցիան ստանում է երկու պարամետր՝ NVL(expr1, expr2): Եթե ​​առաջին պարամետրը expr1-ը NULL չէ, ապա ֆունկցիան վերադարձնում է իր արժեքը: Եթե ​​առաջին պարամետրը NULL է, ապա ֆունկցիան փոխարենը վերադարձնում է երկրորդ պարամետրի արժեքը՝ expr2:

Դիտարկենք գործնական օրինակ. EMP աղյուսակի COMM դաշտը կարող է պարունակել NULL արժեքներ: Նման հարցում կատարելիս.

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

SCOTT.EMP-ից

NULL արժեքը կփոխարինվի զրոյով: Նկատի ունեցեք, որ եթե արժեքը ստեղծվում է ֆունկցիայի միջոցով, ապա դրան վերագրվում է այլանուն: Հարցման արդյունքները նման կլինեն.

EMPNO ENAME COMM NVL_COMM
7369 ՍՄԻԹ 0
7499 ԱԼԵՆ 300 300
7521 ՎԱՐԴ 500 500
7566 ՋՈՆՍ 0
7654 ՄԱՐՏԻՆ 1400 1400
7698 ԲԼԵՔ 0
7782 ԿԼԱՐԿ 0
7839 ԹԱԳԱՎՈՐ 0
7844 ՇՐՋՈՂ 0 0
7900 ՋԵՅՄՍ 0
7902 FORD 0
7934 ՄԻԼԵՐ 0

CEIL(n) ֆունկցիա

CEIL ֆունկցիան վերադարձնում է որպես պարամետր փոխանցված n թվին մեծ կամ հավասար ամենափոքր ամբողջ թիվը: Օրինակ:

SELECT CEIL(100) X1, CEIL(-100) X2, CEIL(100.2) X3 , CEIL(-100.2) X4

ԴՈՒԱԼԻՑ

TRUNC(n[,m])

TRUNC ֆունկցիան վերադարձնում է n թիվը կրճատված m տասնորդական թվերով: m պարամետրը կարող է բաց թողնել, որի դեպքում n-ը կտրվում է ամբողջ թվի:

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

TRUNC(100.25678, 2) X4

ԴՈՒԱԼԻՑ

SIGN(n) ֆունկցիա

SIGN ֆունկցիան որոշում է թվի նշանը: Եթե ​​n-ը դրական է, ապա ֆունկցիան վերադարձնում է 1: Եթե բացասական է, վերադարձնում է -1: Եթե ​​այն զրո է, ապա վերադարձվում է 0: Օրինակ.

SELECT SIGN(100.22) X1, SIGN(-100.22) X2, SIGN(0) X3

ԴՈՒԱԼԻՑ

Այս ֆունկցիայի հետաքրքիր առանձնահատկությունն այն է, որ առանց սխալի 0-ով բաժանելու m-ը հավասար է զրոյի:

POWER(n, m) ֆունկցիա

POWER ֆունկցիան n թիվը հասցնում է m հզորության: Աստիճանը կարող է լինել կոտորակային և բացասական, ինչը զգալիորեն ընդլայնում է այս ֆունկցիայի հնարավորությունները։

SELECT 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

Որոշ դեպքերում այս ֆունկցիան կանչելիս կարող է բացառություն առաջանալ: Օրինակ:

SELECT POWER(-100, 1/2) X2

ԴՈՒԱԼԻՑ

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

SQRT(n) ֆունկցիա

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

SELECT SQRT(100) X

ԴՈՒԱԼԻՑ

EXP(n) և LN(n) ֆունկցիաները

EXP ֆունկցիան e-ն բարձրացնում է n-ի հզորության, իսկ LN ֆունկցիան հաշվարկում է n-ի բնական լոգարիթմը (n-ով պետք է լինի զրոյից մեծ): Օրինակ:

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

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

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

Ներդրված ֆունկցիաները օգտագործում են մի ֆունկցիայի վերադարձի արժեքը՝ որպես մեկ այլ ֆունկցիայի մուտքային պարամետր: Ֆունկցիաները միշտ վերադարձնում են միայն մեկ արժեք: Հետևաբար, ֆունկցիայի կանչի արդյունքը կարող եք դիտարկել որպես բառացի արժեք, երբ այն օգտագործում եք որպես մեկ այլ ֆունկցիայի կանչի պարամետր: Շարքի գործառույթները կարող են տեղադրվել մինչև ցանկացած մակարդակի բույն: Մեկ ֆունկցիայի կանչն այսպիսի տեսք ունի

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

Ֆունկցիայի պարամետրը մեկ այլ ֆունկցիայի կանչով փոխարինելը կարող է հանգեցնել նման արտահայտությունների

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 ֆունկցիայի երկրորդ պարամետր՝ param1.2:
  3. Վերջապես, F1 ֆունկցիան (param1, param2, param1.3) գնահատվում է և արդյունքը վերադարձվում է կանչող ծրագրին։

Այսպիսով, F3 ֆունկցիան գտնվում է երրորդ բույնի մակարդակում:

Մտածեք հարցում

ընտրել next_day(last_day(sysdate)-7, 'tue') dual-ից;

  1. Այս հարցումն ունի երեք գործառույթ՝ ներքևից վերև՝ SYSDATE, LAST_DAY, NEXT_DAY: Խնդրանքը կատարվում է այսպես
  2. Ներդրված SYSDATE ֆունկցիան կատարվում է: Այն վերադարձնում է հոսանքը համակարգի ժամանակը. Ենթադրենք, ներկայիս ամսաթիվը 2009 թվականի հոկտեմբերի 28-ն է
  3. Այնուհետև հաշվարկվում է երկրորդ մակարդակի ֆունկցիայի արդյունքը LAST_DAY: LAST_DATE ('28-OCT-2009') վերադարձնում է 2009 թվականի հոկտեմբերի վերջին օրը, այսինքն՝ 2009 թվականի հոկտեմբերի 31-ը:
  4. Այնուհետև այս օրվանից հանվում է յոթ օր՝ ստացվում է հոկտեմբերի 24-ը։
  5. Վերջապես, NEXT_DAY ('24-OCT-2009', 'tue') ֆունկցիան գնահատվում է, և հարցումը վերադարձնում է հոկտեմբերի վերջին երեքշաբթի օրը, որը մեր օրինակում 27-OCT-2009 է:

Բավականին դժվար է հասկանալ և կառուցել բարդ արտահայտություններ՝ օգտագործելով բազմաթիվ ներդիր ֆունկցիաների կանչեր, բայց դա գալիս է ժամանակի և պրակտիկայի հետ: Դուք կարող եք նման արտահայտությունները բաժանել մասերի և փորձարկել առանձին: DUAL աղյուսակը շատ օգտակար է հարցումների և ֆունկցիաների կանչերի արդյունքների փորձարկման համար: Դուք կարող եք փորձարկել և վրիպազերծել փոքր բաղադրիչները, որոնք այնուհետև միավորվում են մեկ մեծ ցանկալի արտահայտության մեջ:

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

Ճյուղավորման գործառույթները, որոնք նաև հայտնի են որպես IF-THEN-ELSE, օգտագործվում են որոշ հանգամանքներից կախված կատարման ուղին որոշելու համար: Մասնաճյուղի գործառույթները տարբեր արդյունքներ են տալիս՝ հիմնվելով վիճակի գնահատման արդյունքի վրա: Նման գործառույթների խմբում կան NULL արժեքի հետ աշխատելու գործառույթներ՝ NVL, NVL2, NULLIF և COALESCE։ Ինչպես նաեւ ընդհանուր գործառույթներ, որը ներկայացված է DECODE ֆունկցիայով և CASE արտահայտությամբ։ DECODE ֆունկցիան Oracle ֆունկցիա է, մինչդեռ CASE արտահայտությունը գտնվում է ANSI SQL ստանդարտում:

NVL ֆունկցիա

NVL ֆունկցիան ստուգում է սյունակի կամ ցանկացած տվյալների տիպի արտահայտության արժեքը զրոյական արժեքի համար: Եթե ​​արժեքը NULL է, այն վերադարձնում է այլընտրանքային ոչ NULL լռելյայն արժեք, հակառակ դեպքում սկզբնական արժեքը վերադարձվում է:

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

Հարցում 1. ընտրել nvl(1234) dual-ից;

Հարցում 2. ընտրել nvl(null, 1234) dual-ից;

Հարցում 3. ընտրել nvl(substr('abc', 4), 'Entstring գոյություն չունի') dual-ից;

Քանի որ NVL ֆունկցիան պահանջում է երկու պարամետր, հարցումը 1-ը կվերադարձնի ORA-00909՝ անվավեր թվով արգումենտների սխալ: Հարցումը 2-ը կվերադարձնի 1234, քանի որ NULL-ը ստուգվում է, և այն NULL է: Երրորդ հարցումն օգտագործում է SUBSTR ֆունկցիա, որը փորձում է հանել չորրորդ նիշը երեք նիշանոց տողից, վերադարձնում է NULL, իսկ NVL ֆունկցիան վերադարձնում է «No sbusstring exists» տողը:

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

NVL ֆունկցիա2

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

NVL2 ֆունկցիան ունի երեք պահանջվող պարամետր, և շարահյուսությունը NVL2 է (օրիգինալ, ifnotnull, ifnull), որտեղ բնօրինակը փորձարկվող արժեքն է, ifnotnull-ը վերադարձվող արժեքն է, եթե բնօրինակը NULL չէ, և ifnull-ը վերադարձվող արժեքն է, եթե բնօրինակը ԴԱՏԱՐԿ. ifnotnull և ifnull պարամետրերի տվյալների տեսակները պետք է համատեղելի լինեն, և դրանք չեն կարող լինել LONG տիպի: NVL2 ֆունկցիայի կողմից վերադարձված տվյալների տեսակը հավասար է ifnotnull պարամետրի տվյալների տեսակին: Դիտարկենք մի քանի օրինակ

Հարցում 1. ընտրեք nvl2 (1234, 1, «մի տող») երկակիից;

Հարցում 2. ընտրեք nvl2 (null, 1234, 5678) երկակիից;

Հարցում 3. ընտրել nvl2(substr('abc', 2), 'Not bc', 'No substring') dual-ից;

Հարցման 1-ում ifnotnull պարամետրը թիվ է, իսկ ifnull պարամետրը տող է։ Քանի որ տվյալների տեսակներն անհամատեղելի են, «ORA-01722. անվավեր թիվ» սխալը վերադարձվում է: Հարցումը երկրորդը վերադարձնում է ifnull պարամետր, քանի որ բնօրինակը NULL է, իսկ արդյունքը՝ 5678: Հարցումը երրորդն օգտագործում է SUBSTR ֆունկցիան, որը վերադարձնում է «bc» և կանչում է NVL2 («bc», «Not bc», «No substring») – որը վերադարձնում է ifnotnull: պարամետր – «Ոչ bc»:

NULLIF ֆունկցիա

NULLIF ֆունկցիան փորձարկում է երկու արժեք նույնի համար: Եթե ​​դրանք նույնն են, NULL-ը վերադարձվում է, հակառակ դեպքում՝ առաջին պարամետրը: NULLIF ֆունկցիան ունի երկու պահանջվող պարամետր, և շարահյուսությունը NULLIF է (ifunequal, krahasim_item): Ֆունկցիան համեմատում է երկու պարամետր, և եթե դրանք նույնական են, վերադարձնում է NULL, հակառակ դեպքում՝ ifunequal պարամետրը։ Մտածեք հարցումները

Հարցում 1. ընտրել nullif(1234, 1234) dual-ից;

Հարցումը վերադարձնում է NULL, քանի որ պարամետրերը նույնական են: Հարցման 2-ի տողերը չեն փոխարկվում ամսաթվի, այլ համեմատվում են որպես տողերի: Քանի որ տողերը տարբեր երկարություններ ունեն, վերադարձվում է ifunequal 24-JUL-2009 պարամետրը:

Նկար 10-4-ում NULLIF ֆունկցիան տեղադրված է NVL2 ֆունկցիայի մեջ: NULLIF ֆունկցիան իր հերթին օգտագործում է SUBSTR և UPPER ֆունկցիաները՝ որպես ifunequal պարամետրի արտահայտության մաս։ EMAIL սյունակը համեմատվում է այս արտահայտության հետ, որը վերադարձնում է անունի առաջին տառը, որը համակցված է ազգանվան հետ այն աշխատողների համար, որոնց անունը 4 նիշ է: Երբ այս արժեքները հավասար են, NULLIF-ը կվերադարձնի NULL, հակառակ դեպքում այն ​​կվերադարձնի ifunequal պարամետրի արժեքը: Այս արժեքները օգտագործվում են որպես NVL2 ֆունկցիայի պարամետր: NVL2-ն, իր հերթին, վերադարձնում է նկարագրություն, թե արդյոք համեմատվող տարրերը համընկնում են, թե ոչ:

Նկար 10-4 - Օգտագործելով NULLIF ֆունկցիան

COALESCE ֆունկցիա

COALESCE ֆունկցիան պարամետրերի ցանկից վերադարձնում է առաջին ոչ NULL արժեքը: Եթե ​​բոլոր պարամետրերը NULL են, ապա NULL-ը վերադարձվում է: COALESCE ֆունկցիան ունի երկու պահանջվող պարամետր և ցանկացած քանակի կամընտիր պարամետր, և շարահյուսությունը COALESCE է (expr1, expr2, ..., exprn), որտեղ արդյունքը expr1 է, եթե expr 1-ի արժեքը NULL չէ, հակառակ դեպքում արդյունքը expr2 է: եթե այն NULL չէ և այլն: COALESCE-ն իր իմաստով հավասար է ներդիր NVL ֆունկցիաներին

COALESCE (expr1, expr2) = NVL (expr1, expr2)

COALESCE (expr1, expr2, expr3) = NVL (expr1, NVL (expr2, expr3))

Վերադարձված արժեքի տվյալների տեսակը, եթե գտնվի ոչ NULL արժեք, հավասար է առաջին ոչ NULL արժեքի տվյալների տեսակին: «ORA-00932. անհամապատասխան տվյալների տեսակներ» սխալից խուսափելու համար բոլոր ոչ NULL պարամետրերը պետք է համատեղելի լինեն առաջին ոչ NULL պարամետրի հետ: Քննենք երեք օրինակ

Հարցում 1. ընտրել coalesce (null, null, null, 'a string') dual-ից;

Հարցում 2. ընտրել coalesce(null, null, null) dual-ից;

Հարցում 3. ընտրել coalesce(substr('abc', 4), 'Not bc', 'No substring') dual-ից;

Հարցումը 1-ը վերադարձնում է չորրորդ պարամետրը՝ տող, քանի որ այն առաջին ոչ NULL պարամետրն է: Երկրորդ հարցումը վերադարձնում է NULL, քանի որ բոլոր պարամետրերը NULL են: Հարցումը 3-ը գնահատում է առաջին պարամետրը, ստանում է NULL և վերադարձնում երկրորդ պարամետրը, քանի որ այն առաջին ոչ NULL պարամետրն է:

NVL2 ֆունկցիայի պարամետրերը կարող են շփոթեցնել, եթե արդեն ծանոթ եք NVL ֆունկցիային: NVL (օրիգինալ, ifnull) վերադարձնում է բնօրինակը, եթե արժեքը NULL չէ, այլապես ifnull: NVL2 (օրիգինալ, ifnotnull, ifnull) վերադարձնում է ifnotnull, եթե բնօրինակը զրոյական չէ, այլապես ifnull: Խառնաշփոթը գալիս է նրանից, որ NVL ֆունկցիայի երկրորդ պարամետրը ifnull է, մինչդեռ NVL2-ն ունի ifnotnull: Այսպիսով, մի ապավինեք ֆունկցիայի պարամետրի դիրքին:

DECO ֆունկցիա

DECODE ֆունկցիան իրականացնում է if-then-else տրամաբանությունը՝ ստուգելով առաջին երկու պարամետրերը հավասարության համար և վերադարձնելով երրորդ արժեքը, եթե դրանք հավասար են, կամ այլ արժեք, եթե ոչ: DECODE ֆունկցիան ունի երեք պահանջվող պարամետր, իսկ շարահյուսությունը՝ DECODE (expr1, comp1, iftrue1, , ): Այս պարամետրերը օգտագործվում են, ինչպես ցույց է տրված հետևյալ կեղծ կոդի օրինակում:

IF expr1=comp1, ապա վերադարձրեք iftrue1

Այլապես, եթե expr1=comp2, ապա վերադարձրեք iftrue2

Այլապես, եթե exprN=compN, ապա վերադարձրեք iftrueN

Այլապես վերադարձնել NULL|iffalse;

Նախ, expr1-ը համեմատվում է comp1-ի հետ: Եթե ​​դրանք հավասար են, iftrue1-ը վերադարձվում է: Եթե ​​expr1-ը հավասար չէ comp1-ին, ապա այն, ինչ տեղի կունենա հետո, կախված է նրանից, թե արդյոք նշված են comp2 և iftrue2 պարամետրերը: Եթե ​​տրված է, ապա expr1-ի արժեքը համեմատվում է comp2-ի հետ։ Եթե ​​արժեքները հավասար են, ապա iftrue2-ը վերադարձվում է: Եթե ​​ոչ, ապա եթե կան compN, iftrueN պարամետրերի զույգեր, expr1-ը և compN-ը համեմատվում են, իսկ եթե true, iftrueN-ը վերադարձվում է, եթե հավասար է: Եթե ​​որևէ պարամետրի համընկնում չի գտնվել, ապա կամ iffalse-ը վերադարձվում է, եթե նշված է այս պարամետրը, կամ NULL:

DECODE ֆունկցիայի բոլոր պարամետրերը կարող են լինել արտահայտություններ: Վերադարձի արժեքի տեսակը հավասար է առաջին վավերացնողի տեսակին` պարամետրին comp 1. Արտահայտություն expr 1 անուղղակիորեն փոխակերպվում է comp պարամետրի տվյալների տիպի1. Մնացած բոլորը հասանելի տարբերակներհամ 1 … կոմպՆ անուղղակիորեն փոխակերպվում են նաև տիպի comp 1. DECODE-ը վերաբերվում է NULL արժեքին որպես հավասար մեկ այլ NULL արժեքի, այսինքն. եթե expr1-ը NULL է, իսկ comp3-ը՝ NULL, իսկ comp2-ը՝ NULL, ապա iftrue3-ը վերադարձվում է: Դիտարկենք մի քանի օրինակ

Հարցում 1. ընտրել decode (1234, 123, '123-ը համընկնում է') dual-ից;

Հարցում 2. ընտրեք վերծանումը (1234, 123, «123 համընկնում է», «Ոչ համընկնում») երկակիից;

Հարցում 3. ընտրել decode('որոնում', 'comp1', 'true1', 'comp2', 'true2', 'որոնում', 'true3', substr('2որոնում', 2, 6), 'true4', ' կեղծ') երկակիից;

Առաջին հարցումը համեմատում է 1234 և 123 արժեքը: Քանի որ դրանք հավասար չեն, iftrue1-ն անտեսվում է, և քանի որ iffalse-ը սահմանված չէ, NULL-ը վերադարձվում է: Հարցումը երկրորդը նույնական է հարցման 1-ին, բացառությամբ, որ iffalse արժեքը սահմանված է: Քանի որ 1234-ը հավասար չէ 123-ի, եթե կեղծ - ​​«Ոչ համընկնումը» վերադարձվում է: Երրորդ հարցումը ստուգում է պարամետրերի արժեքները որոնման արժեքի նկատմամբ: Comp1 և comp2 պարամետրերը հավասար չեն «որոնմանը», ուստի iftrue1 և iftrue2 արդյունքները բաց են թողնվում: Համընկնում է գտնվել երրորդ comp3 տարրերի համեմատման գործողության մեջ (պարամետրի դիրքը 6) և iftrue3-ի վերադարձի արժեքը (պարամետր 7) «true3» է: Քանի որ համընկնում է հայտնաբերվել, այլևս հաշվարկներ չեն կատարվում: Այսինքն, չնայած այն հանգամանքին, որ comp4-ի արժեքը (պարամետր 8) նույնպես համապատասխանում է expr1-ին, այս արտահայտությունը երբեք չի գնահատվում, քանի որ համապատասխանությունը գտնվել է նախորդ համեմատության մեջ:

CASE արտահայտություն

Բոլոր երրորդ և չորրորդ սերնդի ծրագրավորման լեզուներն իրականացնում են գործի կառուցվածքը: Ինչպես DECODE ֆունկցիան, CASE արտահայտությունը թույլ է տալիս իրականացնել «եթե այնուհետև» տրամաբանությունը: CASE արտահայտությունն օգտագործելու երկու տարբերակ կա: Պարզ CASE հայտարարությունը սահմանում է սկզբնաղբյուրի տարրը համեմատելու մեկ անգամ և այնուհետև թվարկում բոլորը անհրաժեշտ պայմաններըստուգումներ. Համալիր (որոնված) CASE-ը գնահատում է երկու հայտարարությունները յուրաքանչյուր պայմանի համար:

CASE արտահայտությունն ունի երեք պահանջվող պարամետր: Արտահայտության շարահյուսությունը կախված է տեսակից։ Հասարակ CASE արտահայտության համար այն կարծես այսպիսին է

CASE search_expr

ԵՐԲ krahasim_expr1 ՀԵՏՈ iftrue1

)

TRUNC ֆունկցիան վերադարձնում է n թիվը կրճատված m տասնորդական թվերով: m պարամետրը կարող է բաց թողնել, որի դեպքում n-ը կտրվում է ամբողջ թվի:

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

TRUNC(100.25678, 2) X4

ԴՈՒԱԼԻՑ

SIGN(n) ֆունկցիա

SIGN ֆունկցիան որոշում է թվի նշանը: Եթե ​​n-ը դրական է, ապա ֆունկցիան վերադարձնում է 1: Եթե բացասական է, վերադարձնում է -1: Եթե ​​այն զրո է, ապա վերադարձվում է 0: Օրինակ.

SELECT SIGN(100.22) X1, SIGN(-100.22) X2, SIGN(0) X3

ԴՈՒԱԼԻՑ

Այս ֆունկցիայի հետաքրքիր առանձնահատկությունն այն է, որ առանց սխալի 0-ով բաժանելու m-ը հավասար է զրոյի:

POWER(n, m) ֆունկցիա

POWER ֆունկցիան n թիվը հասցնում է m հզորության: Աստիճանը կարող է լինել կոտորակային և բացասական, ինչը զգալիորեն ընդլայնում է այս ֆունկցիայի հնարավորությունները։

SELECT 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

Որոշ դեպքերում այս ֆունկցիան կանչելիս կարող է բացառություն առաջանալ: Օրինակ:

SELECT POWER(-100, 1/2) X2

ԴՈՒԱԼԻՑ

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

SQRT(n) ֆունկցիա

Այս ֆունկցիան վերադարձնում է n-ի քառակուսի արմատը: Օրինակ:

SELECT SQRT(100) X

ԴՈՒԱԼԻՑ

EXP(n) և LN(n) ֆունկցիաները

EXP ֆունկցիան e-ն բարձրացնում է n-ի հզորության, իսկ LN ֆունկցիան հաշվարկում է n-ի բնական լոգարիթմը (n-ով պետք է լինի զրոյից մեծ): Օրինակ:

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