Әр түрлі деректер түрлеріне арналған NVL түрлендірулері. ТАҢДАУ пәрменіндегі салалық мәлімдемелер Oracle nvl сипаттамасы

Біз кірістірілген функцияларға сәл ертерек тоқталдық, енді оларды толығырақ қарастырамыз. Біз сондай-ақ NULL мәнімен жұмыс істеу функцияларын және сұрауда тармақталу операциясын жүзеге асыруға көмектесетін функцияларды қарастырамыз.

Кірістірілген функциялар

Кірістірілген функциялар бір функцияның қайтару мәнін басқа функцияға енгізу параметрі ретінде пайдаланады. Функциялар әрқашан тек бір мәнді қайтарады. Сондықтан функция шақыруының нәтижесін басқа функция шақыруының параметрі ретінде пайдаланған кезде оны мән литералы ретінде қарастыруға болады. Жол функцияларын кез келген кірістіру деңгейіне кірістіруге болады. Бір функция шақыруы осылай көрінеді

Функция1(параметр1, параметр2, …) = нәтиже

Функция параметрін басқа функцияға шақырумен ауыстыру сияқты өрнектерге әкелуі мүмкін

F1(парам1.1, F2(парам2.1, парам2.2, F3(парам3.1)), парам1.3)

Кірістірілген функциялар алдымен олардың нәтижелері басқа функциялар үшін кіріс мәндері ретінде пайдаланбас бұрын бағаланады. Функциялар ең терең ұя деңгейінен жоғарғы деңгейге дейін солдан оңға қарай бағаланады. Алдыңғы өрнек келесідей орындалады

  1. F3(param1) функциясы бағаланады және қайтарылатын мән 2-функция үшін үшінші параметр ретінде пайдаланылады, оны param2.3 деп атаймыз.
  2. Содан кейін F2(param1, param2.2, param2.3) функциясы бағаланады және қайтарылатын мән F1 - параметр1.2 функциясының екінші параметрі ретінде пайдаланылады.
  3. Соңында F1(param1, param2, param1.3) функциясы бағаланады және нәтиже шақырушы бағдарламаға қайтарылады.

Осылайша, F3 функциясы үшінші ұяшық деңгейінде.

Өтінішті қарастырайық

қосарлыдан келесі_күнді(соңғы_күн(sysdate)-7, 'түй') таңдаңыз;

  1. Бұл сұрауда төменгі деңгейден жоғарғы деңгейге дейін үш функция бар - SYSDATE, LAST_DAY, NEXT_DAY. Сұраныс келесідей орындалады
  2. Кірістірілген SYSDATE функциясы орындалады. Ол ағымдағы жүйе уақытын қайтарады. Қазіргі күні 2009 жылдың 28 қазаны делік
  3. Әрі қарай LAST_DAY екінші деңгей функциясының нәтижесі есептеледі. LAST_DATE('28-қазан-2009') 2009 жылдың қазан айының соңғы күнін береді, яғни 2009 жылдың 31 қазаны.
  4. Содан кейін осы күннен жеті күн шегеріледі - 24 қазан.
  5. Соңында, NEXT_DAY('24-қазан-2009', 'tue') функциясы бағаланады және сұрау қазан айының соңғы сейсенбісін қайтарады - бұл біздің мысалда 27-Қаз. 2009 ж.

Көптеген кірістірілген функция шақыруларының көмегімен күрделі өрнектерді түсіну және құру өте қиын, бірақ бұл уақыт пен тәжірибемен келеді. Мұндай өрнектерді бөліктерге бөліп, оларды бөлек тексеруге болады. DUAL кестесі сұраулар мен функцияларды шақыру нәтижелерін тексеру үшін өте пайдалы. Кішкентай құрамдастарды тексеруге және жөндеуге болады, олар кейін бір үлкен қажетті өрнекке біріктіріледі.

Тармақталу функциялары

Кейбір жағдайларға байланысты орындалу жолын анықтау үшін IF-THEN-ALSE деп те аталатын салалық функциялар қолданылады. Тармақталу функциялары шартты бағалау нәтижесіне негізделген әртүрлі нәтижелерді қайтарады. Мұндай функциялар тобына NULL мәнімен жұмыс істеу функциялары кіреді: NVL, NVL2, NULLIF және COALESCE. Сондай-ақ DECODE функциясы және CASE өрнегі арқылы ұсынылған жалпы функциялар. DECODE функциясы Oracle функциясы болып табылады, ал CASE өрнегі ANSI SQL стандартында бар.

NVL функциясы

NVL функциясы NULL мәніне қарсы кез келген деректер түрінің бағанының немесе өрнектің мәнін тексереді. Егер мән NULL болса, ол NULL емес балама әдепкі мәнді қайтарады, әйтпесе бастапқы мәнді қайтарады.

NVL функциясының екі қажетті параметрі бар және синтаксисі NVL(түпнұсқа, ifnull), мұнда түпнұсқа тексерілетін бастапқы мән және ifnull бастапқы мән NULL болса, функция қайтаратын нәтиже. ifnull және бастапқы параметрлердің деректер түрі үйлесімді болуы керек. Яғни, деректер түрі бірдей болуы керек немесе мәндерді бір түрден екіншісіне жасырын түрлендіру мүмкіндігі болуы керек. NVL функциясы бастапқы параметрдің деректер түрі сияқты деректер түрінің мәнін қайтарады. Үш сұрауды қарастырайық

1-сұрау: dual ішінен nvl(1234) таңдаңыз;

2-сұрау: dual ішінен nvl(null, 1234) таңдаңыз;

3-сұраныс: dual ішінен nvl(substr(‘abc', 4), ‘ішкі жол жоқ’) таңдаңыз;

NVL функциясы екі параметрді қажет ететіндіктен, 1-сұраныс ORA-00909 қатесін қайтарады: аргументтердің жарамсыз саны. 2-сұрау 1234 мәнін қайтарады, себебі NULL мәні тексерілген және ол NULL. Үшінші сұрау ұзындығы үш таңбадан тұратын жолдан төртінші таңбаны шығаруға әрекеттенетін кірістірілген SUBSTR функциясын пайдаланады, ол NULL мәнін қайтарады және NVL функциясы 'Sbustring жоқ' жолын қайтарады.

NVL функциясы сандармен жұмыс істегенде өте пайдалы. Ол NULL мәндерін 0-ге түрлендіру үшін қолданылады, осылайша сандарға арифметикалық амалдар NULL мәнін қайтармайды.

NVL функциясы2

NVL2 функциясы NVL-ге қарағанда көбірек функционалдылықты қамтамасыз етеді, бірақ сонымен бірге NULL мәндерін өңдеуге қызмет етеді. Ол NULL мәніне қарсы кез келген түрдегі бағанның немесе өрнектің мәнін тексереді. Егер мән NULL болмаса, онда екінші параметр қайтарылады, әйтпесе NVL функциясына қарағанда үшінші параметр қайтарылады, бұл жағдайда бастапқы мәнді қайтарады.

NVL2 функциясының үш қажетті параметрі бар және синтаксисі NVL2(түпнұсқа, ifnotnull, ifnull), мұндағы түпнұсқа сыналатын мән, ifnotnull - түпнұсқа NULL болмаса қайтарылатын мән, ал егер түпнұсқа NULL болса, ifnull қайтарылатын мән. ifnotnull және ifnull параметрлерінің деректер түрлері үйлесімді болуы керек және олар LONG түрінде болуы мүмкін емес. NVL2 функциясы қайтаратын деректер түрі ifnotnull параметрінің деректер түріне тең. Бірнеше мысалды қарастырайық

1-сұрау: dual ішінен nvl2(1234, 1, 'a string') таңдаңыз;

2-сұрау: dual ішінен nvl2(null, 1234, 5678) таңдаңыз;

3-сұрау: қостан nvl2(substr(‘abc’, 2), ‘bc емес’, ‘ішкі жол жоқ’) таңдаңыз;

1-сұраудағы ifnotnull параметрі сан, ал ifnull параметрі жол болып табылады. Деректер түрлері үйлеспейтіндіктен, «ORA-01722: жарамсыз нөмір» қатесі қайтарылады. Екінші сұрау ifnull параметрін қайтарады, себебі түпнұсқа NULL және нәтиже 5678 болады. Үшінші сұрау 'bc' қайтаратын және NVL2('bc','bc емес','ішкі жол жоқ') шақыратын SUBSTR функциясын пайдаланады. ifnotnull параметрі – 'Bc емес'.

NULLIF функциясы

NULLIF функциясы екі мәннің бірдей екенін тексереді. Егер олар бірдей болса, NULL қайтарылады, әйтпесе бірінші параметр қайтарылады. NULLIF функциясының екі қажетті параметрі бар және синтаксисі NULLIF (егер тең емес, салыстыру_элемесі). Функция екі параметрді салыстырады және олар бірдей болса, NULL қайтарылады, әйтпесе параметр тең емес болады. Өтініштерді қарастырайық

1-сұрау: қосарлыдан nullif(1234, 1234) таңдаңыз;

Бірінші сұрау NULL мәнін қайтарады, себебі параметрлер бірдей. 2-сұраудағы жолдар күнге түрлендірілмейді, бірақ жолдар ретінде салыстырылады. Жолдардың ұзындығы әртүрлі болғандықтан, ifunequal параметрі 24-ШІЛ-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) болып табылады, мұнда нәтиже 1 мәні NULL болмаса, нәтиже экспр1 болады, әйтпесе нәтиже болады expr2 егер ол NULL болмаса және т.б. COALESCE мәні бойынша кірістірілген NVL функцияларына тең

БІРІКТІРУ(көрсеткіш1, сөз2) = NVL(көрсеткіш1, экспр2)

БІРІКТІРУ(көрсеткіш1, 2, 3) = NVL(көрсеткіш1, NVL(көрсеткіш2, 3))

NULL емес мән табылса, қайтарылған мәннің деректер түрі бірінші NULL емес мәннің деректер түріне тең. "ORA-00932: сәйкес емес деректер түрлері" қатесін болдырмау үшін барлық NULL емес параметрлер бірінші NULL емес параметрмен үйлесімді болуы керек. Үш мысалды қарастырайық

1-сұрау: қос параметрден біріктіру (null, null, null, 'a string') таңдаңыз;

2-сұрау: қостан біріктіру(null, null, null) таңдаңыз;

3-сұрау: қос мәннен coalesce(substr('abc', 4), 'bc емес', 'ішкі жол жоқ') таңдаңыз;

1-сұрау төртінші параметрді қайтарады: жол, себебі ол бірінші NULL емес параметр. Екінші сұрау NULL мәнін қайтарады, себебі барлық параметрлер NULL. 3-сұрау бірінші параметрді бағалайды, NULL мәнін алады және екінші параметрді қайтарады, себебі ол бірінші NULL емес параметр.

NVL функциясымен бұрыннан таныс болсаңыз, NVL2 функциясының параметрлері шатасуы мүмкін. NVL(original, ifnull) егер мән NULL болмаса, түпнұсқаны қайтарады, әйтпесе ifnull. NVL2(түпнұсқа, ifnotnull, ifnull) егер түпнұсқа NULL болмаса, ifnotnull мәнін қайтарады, әйтпесе ifnull. Шатасу NVL функциясының екінші параметрі ifnull, ал NVL2 функциясы ifnotnull екеніне байланысты. Сондықтан функциядағы параметрдің орнына сенбеңіз.

DECODE функциясы

DECODE функциясы теңдік үшін алғашқы екі параметрді сынау және егер олар тең болса, үшінші мәнді немесе тең болмаса басқа мәнді қайтару арқылы if-then-else логикасын жүзеге асырады. DECODE функциясының үш қажетті параметрі бар және синтаксисі DECODE(expr1, comp1, iftrue1, , ) болып табылады. Бұл параметрлер келесі псевдокод мысалында көрсетілгендей пайдаланылады

IF expr1=comp1 болса, iftrue1 мәнін қайтарыңыз

Әйтпесе expr1=comp2 болса, iftrue2 мәнін қайтарыңыз

Әйтпесе exprN=compN болса, iftrueN мәнін қайтарыңыз

Else NULL|iffalse қайтарады;

Біріншіден, expr1 comp1-мен салыстырылады. Егер олар тең болса, iftrue1 қайтарылады. Егер expr1 comp1 мәніне тең болмаса, одан кейінгі жағдай comp2 және iftrue2 параметрлерінің көрсетілгеніне байланысты болады. Егер берілген болса, expr1 мәні comp2 мәнімен салыстырылады. Егер мәндер тең болса, iftrue2 қайтарылады. Егер жоқ болса, онда compN параметрлерінің жұптары болса, iftrueN, expr1 және compN салыстырылады және тең болса, iftrueN қайтарылады. Параметрлердің кез келген жинағында сәйкестік табылмаса, егер бұл параметр көрсетілген болса iffalse немесе NULL мәні қайтарылады.

DECODE функциясындағы барлық параметрлер өрнектер болуы мүмкін. Қайтару мәнінің түрі бірінші тексеру элементінің түріне - параметрге тең comp 1. Өрнек expr 1 жанама түрде comp параметрінің деректер түріне түрлендіріледі1. Барлық басқа қолжетімді комп параметрлері 1...компН сонымен қатар жанама түрде comp түріне түрлендіріледі 1. DECODE NULL мәнін басқа NULL мәніне тең деп қарастырады, яғни. егер expr1 NULL болса және comp3 NULL болса және comp2 NULL болмаса, iftrue3 қайтарылады. Бірнеше мысалды қарастырайық

1-сұрау: қостан декодтауды (1234, 123, «123 сәйкес келеді») таңдаңыз;

2-сұрау: қостан декодтауды (1234, 123, '123 сәйкестік', 'Сәйкес емес') таңдаңыз;

3-сұрау: декодтауды таңдаңыз('іздеу', 'құрастыру1', 'true1', 'comp2', 'true2', 'search', 'true3', substr('2search', 2, 6), 'true4', ' жалған') қосарлыдан;

Бірінші сұрау 1234 және 123 мәндерін салыстырады. Олар тең болмағандықтан, iftrue1 еленбейді және iffalse мәні анықталмағандықтан, NULL мәні қайтарылады. iffalse мәні анықталғанын қоспағанда, екінші сұрау 1 сұраумен бірдей. 1234 саны 123-ке тең болмағандықтан, ол iffalse мәнін қайтарады – «Сәйкестік жоқ». Үшінші сұрау іздеу мәніне сәйкес келетін параметр мәндерін тексереді. Comp1 және comp2 параметрлері "іздеу" параметріне тең емес, сондықтан iftrue1 және iftrue2 нәтижелері өткізіліп жіберіледі. Сәйкестік comp3 элементінің үшінші салыстыру әрекетінде табылды (параметрдің 6-позициясы) және iftrue3 мәні (параметр 7) қайтарылады, ол "true3" мәніне тең. Сәйкестік табылғандықтан, басқа есептеулер жүргізілмейді. Яғни, comp4 мәні (8-параметр) expr1 мәніне де сәйкес келетініне қарамастан, сәйкестік алдыңғы салыстыруда табылғандықтан бұл өрнек ешқашан есептелмейді.

CASE өрнегі

Барлық үшінші және төртінші буын программалау тілдері кейс конструкциясын жүзеге асырады. DECODE функциясы сияқты, CASE өрнегі if-then-else логикасын жүзеге асыруға мүмкіндік береді. CASE өрнегін пайдаланудың екі нұсқасы бар. Қарапайым CASE өрнегі бір рет салыстыру үшін бастапқы элементті орнатады, содан кейін барлық қажетті сынақ шарттарын тізімдейді. Күрделі (ізделген) CASE әрбір шарт үшін екі мәлімдемені де бағалайды.

CASE өрнегі үш қажетті параметрге ие. Өрнек синтаксисі түріне байланысты. Қарапайым CASE өрнегі үшін ол келесідей көрінеді

CASE search_expr

ҚАШАН салыстыру_түсіндірмесі1 ОДАН СОҢ iftrue1

)

TRUNC функциясы m ондық таңбаға дейін қысқартылған n санын қайтарады. m параметрі көрсетілмеуі мүмкін, бұл жағдайда n бүтін санға қысқартылады.

ТАҢДАУ TRUNC(100.25678) X1, TRUNC(-100.25678) X2, TRUNC(100.99) X3,

TRUNC(100.25678, 2) X4

DUAL

SIGN(n) функциясы

SIGN функциясы санның таңбасын анықтайды. Егер n оң болса, функция 1 мәнін қайтарады. Егер n теріс болса, ол -1 мәнін қайтарады. Егер нөлге тең болса, 0 қайтарылады. Мысалы:

ТАҢДАУ БЕЛГІСІ(100.22) X1, БЕЛГІСІ(-100.22) X2, БЕЛГІСІ(0) X3

DUAL

Бұл функцияның қызықты ерекшелігі - 0-ге бөлу қатесін тудырмай, нөлге тең m беру мүмкіндігі.

POWER функциясы(n, m)

POWER функциясы n санын m деңгейіне дейін көтереді. Дәреже бөлшек және теріс болуы мүмкін, бұл бұл функцияның мүмкіндіктерін айтарлықтай кеңейтеді.

ТАҢДАУ POWER(10, 2) X1, POWER(100, 1/2) X2,

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

DUAL

X1 X2 X3 X4
100 10 10 0,1

Кейбір жағдайларда бұл функцияны шақыру кезінде ерекше жағдай орын алуы мүмкін. Мысалы:

ҚУАТТЫ ТАҢДАУ(-100, 1/2) X2

DUAL

Бұл жағдайда теріс санның квадрат түбірін есептеу әрекеті жасалады, нәтижесінде ORA-01428 «Аргумент ауқымнан тыс» қатесі пайда болады.

SQRT(n) функциясы

Бұл функция n санының квадрат түбірін қайтарады. Мысалы:

SQRT(100) X ТАҢДАУ

DUAL

EXP(n) және LN(n) функциялары

EXP функциясы e мәнін n дәрежесіне көтереді, ал LN функциясы n-дің табиғи логарифмін есептейді (n нөлден үлкен болуы керек). Мысалы:

EXP(2) X1, LN(1) X2, LN(EXP(2)) X3 ТАҢДАУ

NVL функциясы

NVL функциясы әдетте жиі қолданылады. Функция екі параметрді қабылдайды: NVL(expr1, expr2). Егер expr1 бірінші параметрі NULL болмаса, функция өз мәнін қайтарады. Егер бірінші параметр NULL болса, функция орнына expr2 екінші параметрінің мәнін қайтарады.

Практикалық мысалды қарастырайық. EMP кестесіндегі COMM өрісі NULL мәндерін қамтуы мүмкін. Сұрауды орындау кезінде:

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 санынан үлкен немесе оған тең ең кіші бүтін санды қайтарады. Мысалы:

CEIL(100) X1, CEIL(-100) X2, CEIL(100,2) X3 , CEIL(-100,2) X4 ТАҢДАУ

DUAL

TRUNC функциясы(n [,м])

TRUNC функциясы m ондық таңбаға дейін қысқартылған n санын қайтарады. m параметрі көрсетілмеуі мүмкін, бұл жағдайда n бүтін санға қысқартылады.

ТАҢДАУ TRUNC(100.25678) X1, TRUNC(-100.25678) X2, TRUNC(100.99) X3,

TRUNC(100.25678, 2) X4

DUAL

SIGN(n) функциясы

SIGN функциясы санның таңбасын анықтайды. Егер n оң болса, функция 1 мәнін қайтарады. Егер n теріс болса, ол -1 мәнін қайтарады. Егер нөлге тең болса, 0 қайтарылады. Мысалы:

ТАҢДАУ БЕЛГІСІ(100.22) X1, БЕЛГІСІ(-100.22) X2, БЕЛГІСІ(0) X3

DUAL

Бұл функцияның қызықты ерекшелігі - 0-ге бөлу қатесін тудырмай, нөлге тең m беру мүмкіндігі.

POWER функциясы(n, m)

POWER функциясы n санын m деңгейіне дейін көтереді. Дәреже бөлшек және теріс болуы мүмкін, бұл бұл функцияның мүмкіндіктерін айтарлықтай кеңейтеді.

ТАҢДАУ POWER(10, 2) X1, POWER(100, 1/2) X2,

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

DUAL

X1 X2 X3 X4
100 10 10 0,1

Кейбір жағдайларда бұл функцияны шақыру кезінде ерекше жағдай орын алуы мүмкін. Мысалы:

ҚУАТТЫ ТАҢДАУ(-100, 1/2) X2

DUAL

Бұл жағдайда теріс санның квадрат түбірін есептеу әрекеті жасалады, нәтижесінде ORA-01428 «Аргумент ауқымнан тыс» қатесі пайда болады.

SQRT(n) функциясы

Бұл функция n санының квадрат түбірін қайтарады. Мысалы:

SQRT(100) X ТАҢДАУ

DUAL

EXP(n) және LN(n) функциялары

EXP функциясы e мәнін n дәрежесіне көтереді, ал LN функциясы n-дің табиғи логарифмін есептейді (n нөлден үлкен болуы керек). Мысалы:

EXP(2) X1, LN(1) X2, LN(EXP(2)) X3 ТАҢДАУ

Сандары бар TO_CHAR функциясы

Деректерді басқа деректер түрлеріне түрлендіру функциялары. TO_CHAR(сан) санды мәтінге түрлендіреді. TO_NUMBER(жол) мәтінді санға түрлендіреді.

SELECT TO_CHAR (123) FROM DUAL 123 жолын, SELECT TO_NUMBER (`12345") FROM DUAL 12345 санын қайтарады.

Зертханалық жұмыс. Шығарылатын сан пішімін өзгерту

Oracle SQL жүйесіндегі сандық мәндердің пішіміндегі өзгерістер, сандық мәндермен жұмыс істеуге арналған TO_CHAR функциясы.

Жаттығу:

hr.employees кестесінен қызметкерлердің аты-жөні, тегі және жалақысы туралы ақпаратты суретте көрсетілген форматта көрсететін сұранысты жазыңыз. 3.4-1:

Күріш. 3.4 -1

Бұл жағдайда деректерді ең жоғары жалақысы бар қызметкерлерге арналған жолдар бірінші көрсетілетіндей етіп сұрыптау керек.

Ескерту:

Кейбір жалақы мәндері суретте. 3.4-1 өзгертілді, сондықтан олар мәндеріңізбен бірдей болмауы мүмкін.

Шешімі:

"Аты-жөні" ретінде аты_жөнін ТАҢДАҢЫЗ, тегі_аты "Тегі", TO_CHAR (ЖАЛАҚЫ, "L999999999,99") "Жалақы" ретінде сағ.қызметкерлердің ТАПСЫРЫСЫ БОЙЫНША ЖАЛАҚЫ.

TO_NUMBER және TO_DATE функциялары

Жолды TO_DATE (жол, пішім) күніне түрлендіру функциясы. Ықтимал пішім мәндері жоғарыда талқыланды, сондықтан мен бұл функцияны пайдаланудың бірнеше мысалдарын беремін. Мысалдар:

ТАҢДАУ TO_DATE("01/01/2010", `КК.АА.ЖЖЖЖ") FROM DUAL `01/01/2010» күнін қайтарады;

ТАҢДАУБҮГІН_КҮН("01.ҚАҢТАР 2010 ж.", `КК.ДҮЙ.ЖЖЖЖ") FROM DUAL `01/01/2009» күнін қайтарады;

ТАҢДАУ TO_DATE("15-01-10", `КК-АА-ЖЖ") FROM DUAL "01/15/2010" күнін қайтарады.

Жолды TO_NUMBER сандық мәніне түрлендіру функциясы (жол, пішім). Ең көп таралған пішім мәндері кестеде келтірілген, сондықтан мысалдар арқылы осы функцияны пайдалануды қарастырайық. Мысалдар:

ТАҢДАУ TO_NUMBER(`100") FROM DUAL 100 SELECT TO_NUMBER санын қайтарады (`0010.01, «9999D99») FROM DUAL 10.01 санын қайтарады;

ТАҢДАУ TO_NUMBER("500 000", "999G999") FROM DUAL 500000 санын қайтарады.

Күн пішіміндегі RR элементі

RR datetime пішім элементі YY datetime пішім элементіне ұқсас, бірақ ол басқа ғасырлардағы күн мәндерін сақтау үшін қосымша икемділікті қамтамасыз етеді. RR datetime пішімінің элементі жылдың тек соңғы екі санын көрсету арқылы 20-шы ғасыр күндерін 21-ші ғасырда сақтауға мүмкіндік береді.

Ағымдағы жылдың соңғы екі саны 00-ден 49-ға дейін болса, қайтарылған жылда ағымдағы жылмен бірдей алғашқы екі сан болады.

Егер ағымдағы жылдың соңғы екі саны 50-ден 99-ға дейін болса, онда қайтарылған жылдың алғашқы 2 саны ағымдағы жылдың алғашқы 2 цифрынан 1-ге артық.

Егер ағымдағы жылдың соңғы екі саны 00-ден 49-ға дейін болса, онда қайтарылған жылдың алғашқы 2 саны ағымдағы жылдың алғашқы 2 цифрынан 1-ге кем.

Егер ағымдағы жылдың соңғы екі саны 50-ден 99-ға дейін болса, онда қайтарылған жылда ағымдағы жылдың алғашқы екі саны бірдей болады.

NVL функциясы

NVL функциясы әдетте жиі қолданылады. Функция екі параметрді қабылдайды: NVL (expr1, expr2). Егер expr1 бірінші параметрі NULL болмаса, функция өз мәнін қайтарады. Егер бірінші параметр NULL болса, функция орнына expr2 екінші параметрінің мәнін қайтарады.

Мысал: Жеткізушілерден NVL (жабдықтаушы_қала, жоқ") таңдаңыз:

Жоғарыдағы SQL мәлімдемесі жеткізуші_қала өрісінде нөлдік мән болса, n/" қайтарады. Әйтпесе, жеткізуші_қала мәнін қайтарады.

Oracle/PLSQL жүйесінде NVL функциясын пайдаланудың тағы бір мысалы:

жеткізушілерден жеткізуші_идентификаторы, NVL (жабдықтаушының_түсіру, жеткізуші_аты) таңдаңыз.

Бұл SQL мәлімдемесі қайтарылады жеткізуші_атауыөріс болса жеткізуші_түсірунөлдік мәнді қамтиды. Әйтпесе қайтады жеткізуші_түсіру.

Соңғы мысал: Oracle/PLSQL жүйесінде NVL функциясын пайдалану: сатудан NVL(комиссия, 0) таңдаңыз;

Бұл SQL мәлімдемесі егер 0 мәнін қайтарды комиссияӨріс бос мәнді қамтиды. Әйтпесе қайтарылатын еді комиссияларөріс.

Әр түрлі деректер түрлеріне арналған NVL түрлендірулері

Нөл мәнді нақты мәнге түрлендіру үшін NVL функциясын пайдаланыңыз: NVL ( өрнек1, өрнек2), Қайда:

өрнек1-Анықталмаған болуы мүмкін бастапқы немесе есептелген мән.

өрнек2- Анықталмаған мәнге ауыстырылатын мән.

Ескерту: NVL функциясын кез келген деректер түрін түрлендіру үшін пайдалануға болады, бірақ нәтиже әрқашан бірдей түр болады өрнек1.

үшін NVL түрлендіру әртүрлі түрлері:

NUMBER - NVL (сандық баған, 9).

CHAR немесе VARCHAR2 - NVL (таңбалар|баған,«Жоқ»).

Зертханалық жұмыс. NVL функциясын пайдалану

Oracle SQL жүйесінде нөлдік мәндермен жұмыс істеуге арналған NVL функциясы.

Жаттығу:

hr.employees кестесінен қызметкердің аты-жөні туралы ақпаратты, сондай-ақ қызметкер үшін комиссиялық мөлшерлемені (COMMISSION_PCT бағаны) көрсететін сұрауды жазыңыз. Бұл жағдайда комиссия анықталмаған қызметкерлер үшін 0 мәні көрсетілуі керек Сұраныс нәтижесі суретте көрсетілгендей болуы керек. 3,5-1.

Күріш. 3.5 -1 (мәндер 51-жолдан бастап көрсетілген)

Шешімі:

Сәйкес сұрау коды келесідей болуы мүмкін:

"Аты-жөні" Аты-жөні, тегі_аты "Тегі" ретінде, NVL (COMMISSION_PCT, 0) "Комиссия мөлшерлемесі" ретінде hr.employees ТАҢДАҢЫЗ.




Жоғарғы