Müxtəlif məlumat növləri üçün NVL çevrilmələri. SELECT əmrindəki filial ifadələri Oracle nvl təsviri

Bir az əvvəl yuvalanmış funksiyalara toxunduq, indi onlara bir az daha ətraflı baxacağıq. Biz həmçinin NULL dəyəri ilə işləmək üçün funksiyaları və sorğuda budaqlanma əməliyyatını həyata keçirməyə kömək edən funksiyaları nəzərdən keçirəcəyik.

İç-içə funksiyalar

İç-içə funksiyalar bir funksiyanın qaytarılması dəyərini digər funksiyaya giriş parametri kimi istifadə edir. Funksiyalar həmişə yalnız bir dəyər qaytarır. Buna görə də, funksiya çağırışının nəticəsini başqa bir funksiya çağırışına parametr kimi istifadə edərkən onu dəyər hərfi kimi qəbul edə bilərsiniz. Simli funksiyalar istənilən yuva səviyyəsinə daxil edilə bilər. Bir funksiya çağırışı belə görünür

Funksiya1(parametr1, parametr2, …) = nəticə

Funksiya parametrini başqa funksiyaya çağırışla əvəz etmək kimi ifadələrlə nəticələnə bilər

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

Nəticələri digər funksiyalar üçün giriş dəyərləri kimi istifadə edilməzdən əvvəl yuvalanmış funksiyalar qiymətləndirilir. Funksiyalar soldan sağa ən dərin yuva səviyyəsindən yuxarıya doğru qiymətləndirilir. Əvvəlki ifadə aşağıdakı kimi yerinə yetirilir

  1. F3(param1) funksiyası qiymətləndirilir və qaytarılan qiymət 2-ci funksiya üçün üçüncü parametr kimi istifadə olunur, onu param2.3 adlandıraq.
  2. Sonra F2(param1, param2.2, param2.3) funksiyası qiymətləndirilir və qaytarılan qiymət F1 - param1.2 funksiyasının ikinci parametri kimi istifadə olunur.
  3. Nəhayət, F1(param1, param2, param1.3) funksiyası qiymətləndirilir və nəticə çağırış proqramına qaytarılır.

Beləliklə, F3 funksiyası üçüncü yuva səviyyəsindədir.

Müraciəti nəzərdən keçirək

ikilidən növbəti_gün(son_gün(sysdate)-7, 'bazar') seçin;

  1. Bu sorğuda aşağı səviyyədən yuxarı səviyyəyə kimi üç funksiya var - SYSDATE, LAST_DAY, NEXT_DAY. Sorğu aşağıdakı kimi həyata keçirilir
  2. Daxili SYSDATE funksiyası yerinə yetirilir. Cari sistem vaxtını qaytarır. Tutaq ki, indiki tarix 28 oktyabr 2009-cu ildir
  3. Sonra LAST_DAY ikinci səviyyəli funksiyanın nəticəsi hesablanır. LAST_DATE('28-OKT-2009') 2009-cu ilin oktyabr ayının son gününü, yəni 31 oktyabr 2009-cu il tarixini qaytarır.
  4. Sonra bu tarixdən yeddi gün çıxarılır - 24 oktyabr olur.
  5. Nəhayət, NEXT_DAY('24-OCT-2009', 'tue') funksiyası qiymətləndirilir və sorğu oktyabrın sonuncu çərşənbə axşamını qaytarır - bizim nümunəmizdə 27-OKT-2009-dur.

Bir çox daxili funksiya çağırışlarından istifadə edərək mürəkkəb ifadələri başa düşmək və qurmaq olduqca çətindir, lakin bu, vaxt və təcrübə ilə gəlir. Bu cür ifadələri hissələrə ayırıb ayrı-ayrılıqda sınaqdan keçirə bilərsiniz. DUAL cədvəli sorğuların və funksiya çağırışlarının nəticələrini yoxlamaq üçün çox faydalıdır. Siz kiçik komponentləri sınaqdan keçirə və sazlaya bilərsiniz, sonra onlar bir böyük arzu olunan ifadədə birləşdirilir.

Budaqlanma funksiyaları

IF-THEN-ELSE kimi də tanınan filial funksiyaları bəzi hallardan asılı olaraq icra yolunu müəyyən etmək üçün istifadə olunur. Budaqlanma funksiyaları vəziyyətin qiymətləndirilməsinin nəticəsi əsasında müxtəlif nəticələr verir. Belə funksiyalar qrupuna NULL dəyəri ilə işləmək üçün funksiyalar daxildir: NVL, NVL2, NULLIF və COALESCE. Həmçinin DECODE funksiyası və CASE ifadəsi ilə təmsil olunan ümumi funksiyalar. DECODE funksiyası Oracle funksiyasıdır, halbuki CASE ifadəsi ANSI SQL standartında mövcuddur.

NVL funksiyası

NVL funksiyası hər hansı bir məlumat növünün sütun və ya ifadəsinin dəyərini NULL-ə qarşı yoxlayır. Əgər dəyər NULL olarsa, o, alternativ qeyri-NULL standart dəyəri qaytarır, əks halda orijinal dəyəri qaytarır.

NVL funksiyasının iki tələb olunan parametri var və sintaksis NVL(orijinal, ifnull)-dır, burada orijinal yoxlanılacaq orijinal dəyərdir və ifnull orijinal dəyər NULL olduqda funksiya tərəfindən qaytarılan nəticədir. ifnull və orijinal parametrlərin məlumat növü uyğun olmalıdır. Yəni ya məlumat növü eyni olmalıdır, ya da dəyərləri bir növdən digərinə dolayısı ilə çevirmək mümkün olmalıdır. NVL funksiyası orijinal parametrin məlumat növü ilə eyni tipli bir dəyəri qaytarır. Gəlin üç sorğuya nəzər salaq

Sorğu 1: ​​ikilidən nvl(1234) seçin;

Sorğu 2: dualdan nvl(null, 1234) seçin;

Sorğu 3: dualdan nvl(substr('abc', 4), 'Alt sətir yoxdur') seçin;

NVL funksiyası iki parametr tələb etdiyindən, sorğu 1 ORA-00909 xətası qaytaracaq: arqumentlərin etibarsız sayı. NULL dəyəri yoxlanıldığı və NULL olduğu üçün sorğu 2 1234 qaytaracaq. Üçüncü sorğuda üç simvol uzunluğunda sətirdən dördüncü simvolu çıxarmağa çalışan, NULL dəyərini qaytarmağa çalışan iç içə SUBSTR funksiyasından istifadə edir və NVL funksiyası "Sbustring mövcud deyil" sətrini qaytarır.

NVL funksiyası rəqəmlərlə işləyərkən çox faydalıdır. O, NULL dəyərlərini 0-a çevirmək üçün istifadə olunur ki, ədədlər üzərində hesab əməliyyatları NULL qaytarmasın.

NVL funksiyası2

NVL2 funksiyası NVL-dən daha çox funksionallıq təmin edir, həm də NULL dəyərləri idarə etməyə xidmət edir. O, sütunun və ya istənilən növ ifadənin dəyərini NULL-ə qarşı yoxlayır. Əgər dəyər NULL deyilsə, ikinci parametr qaytarılır, əks halda bu halda orijinal dəyəri qaytaran NVL funksiyasından fərqli olaraq üçüncü parametr qaytarılır.

NVL2 funksiyasının üç tələb olunan parametri var və sintaksis NVL2-dir (orijinal, ifnotnull, ifnull), burada orijinal sınanan dəyərdir, ifnotnull orijinal NULL deyilsə qaytarılan dəyərdir və orijinal NULL olduqda ifnull qaytarılan dəyərdir. ifnotnull və ifnull parametrlərinin məlumat növləri uyğun olmalıdır və onlar LONG tipli ola bilməz. NVL2 funksiyası tərəfindən qaytarılan məlumat növü ifnotnull parametrinin məlumat növünə bərabərdir. Gəlin bir neçə nümunəyə baxaq

Sorğu 1: ​​dualdan nvl2(1234, 1, 'a string') seçin;

Sorğu 2: dualdan nvl2(null, 1234, 5678) seçin;

Sorğu 3: ikilidən nvl2(substr('abc', 2), 'bc deyil', 'alt sətir yoxdur') seçin;

Sorğu 1-də ifnotnull parametri rəqəmdir, ifnull parametri isə sətirdir. Məlumat növləri uyğun olmadığı üçün “ORA-01722: etibarsız nömrə” xətası qaytarılır. İkinci sorğu ifnull parametrini qaytarır, çünki orijinal NULL və nəticə 5678 olacaq. Üçüncü sorğu 'bc' qaytaran və NVL2('bc','bc deyil','alt sətir yoxdur') çağıran SUBSTR funksiyasından istifadə edir. ifnotnull parametri – 'bc deyil'.

NULLIF funksiyası

NULLIF funksiyası iki dəyərin eyni olub olmadığını yoxlayır. Əgər onlar eynidirsə, NULL qaytarılır, əks halda birinci parametr qaytarılır. NULLIF funksiyasının iki tələb olunan parametri var və sintaksis NULLIF(əgər bərabər, müqayisə_maddəsi)-dir. Funksiya iki parametri müqayisə edir və onlar eynidirsə, NULL qaytarılır, əks halda parametr qeyri-bərabərdir. Gəlin müraciətləri nəzərdən keçirək

Sorğu 1: ​​dualdan nullif(1234, 1234) seçin;

Parametrlər eyni olduğundan sorğu birinci NULL qaytarır. Sorğu 2-dəki sətirlər tarixə çevrilmir, lakin sətirlər kimi müqayisə edilir. Sətirlər müxtəlif uzunluqlarda olduğundan, ifunequal parametri 24 İYUL-2009-a qaytarılır.

Şəkil 10-4-də NULLIF funksiyası NVL2 funksiyası daxilində yerləşmişdir. NULLIF funksiyası öz növbəsində SUBSTR və UPPER funksiyalarından ifunequal parametrində ifadənin bir hissəsi kimi istifadə edir. EMAIL sütunu adı 4 simvol uzunluğunda olan işçilər üçün adın ilk hərfini soyadı ilə birləşdirən bu ifadə ilə müqayisə edilir. Bu dəyərlər bərabər olduqda, NULLIF NULL qaytaracaq, əks halda ifunequal parametrinin dəyərini qaytaracaq. Bu dəyərlər NVL2 funksiyası üçün parametr kimi istifadə olunur. NVL2 öz növbəsində müqayisə edilən elementlərin uyğun olub-olmamasının təsvirini qaytarır.

Şəkil 10-4 – NULLIF funksiyasından istifadə

COALESCE funksiyası

COALESCE funksiyası parametr siyahısından ilk qeyri-NULL dəyəri qaytarır. Bütün parametrlər NULL olarsa, NULL qaytarılır. COALESCE funksiyasının iki tələb olunan parametri və istənilən sayda isteğe bağlı parametrləri var və sintaksis COALESCE(ifadə1, ifadə2, ..., ifadə)-dir, burada ifadə 1-in dəyəri NULL deyilsə, nəticə ifadə1 olacaq, əks halda nəticə belə olacaq. expr2 əgər NULL deyilsə və s. COALESCE məna baxımından iç içə NVL funksiyalarına bərabərdir

COALESCE(ifadə1, ifadə2) = NVL(ifadə1, ifadə2)

COALESCE(ifadə1, ifadə2, ifadə3) = NVL(ifadə1, NVL(ifadə2, ifadə3))

Qeyri-NULL dəyər tapılarsa, qaytarılan dəyərin məlumat növü ilk NULL olmayan dəyərin məlumat növünə bərabərdir. 'ORA-00932: uyğun olmayan məlumat növləri' xətasının qarşısını almaq üçün bütün NULL olmayan parametrlər ilk qeyri-NULL parametrlə uyğun olmalıdır. Gəlin üç nümunəyə baxaq

Sorğu 1: ​​dualdan coalesce(null, null, null, 'a string') seçin;

Sorğu 2: dualdan coalesce(null, null, null) seçin;

Sorğu 3: dualdan coalesce(substr('abc', 4), 'bc deyil', 'alt sətir yoxdur') seçin;

Sorğu 1 dördüncü parametri qaytarır: sətir, çünki ilk qeyri-NULL parametrdir. Bütün parametrlər NULL olduğu üçün iki sorğu NULL qaytarır. Sorğu 3 birinci parametri qiymətləndirir, NULL dəyərini alır və birinci qeyri-NULL parametr olduğu üçün ikinci parametri qaytarır.

Əgər NVL funksiyası ilə artıq tanışsınızsa, NVL2 funksiyasının parametrləri çaşdırıcı ola bilər. NVL(orijinal, ifnull) dəyər NULL deyilsə orijinalı qaytarır, əks halda ifnull. NVL2(orijinal, ifnotnull, ifnull) orijinal NULL deyilsə, ifnotnull qaytarır, əks halda ifnull. Çaşqınlıq NVL funksiyasının ikinci parametrinin ifnull, NVL2 funksiyasının isə ifnotnull olması ilə əlaqədardır. Buna görə də funksiyadakı parametrin mövqeyinə etibar etməyin.

DECODE funksiyası

DECODE funksiyası ilk iki parametri bərabərlik üçün sınaqdan keçirərək və bərabər olduqda üçüncü dəyəri və ya bərabər olmadıqda fərqli dəyəri qaytarmaqla if-then-else məntiqini həyata keçirir. DECODE funksiyasının üç tələb olunan parametri var və sintaksis DECODE (ifadə1, komp1, iftrue1, , )-dir. Bu parametrlər aşağıdakı psevdokod nümunəsində göstərildiyi kimi istifadə olunur

IF expr1=comp1 olarsa, iftrue1-i qaytarın

Əks halda ifadə1=comp2 olarsa, iftrue2-ni qaytarın

Əks halda, əgər exprN=compN, onda iftrueN-ni qaytarın

Əks halda NULL|iffalse qaytarın;

Birincisi, expr1 comp1 ilə müqayisə edilir. Əgər onlar bərabərdirsə, iftrue1 qaytarılır. İfadə1 comp1-ə bərabər deyilsə, sonra baş verənlər comp2 və iftrue2 parametrlərinin göstərilib-göstərilməməsindən asılıdır. Əgər verilmişdirsə, expr1 dəyəri comp2 ilə müqayisə edilir. Dəyərlər bərabərdirsə, iftrue2 qaytarılır. Əgər belə deyilsə, onda compN parametrləri cütü varsa, iftrueN, ifadə1 və compN müqayisə edilir və bərabərdirsə, iftrueN qaytarılır. Əgər hər hansı bir parametr dəstində uyğunluq tapılmadısa, ya bu parametr göstərilibsə iffalse, ya da NULL qaytarılır.

DECODE funksiyasındakı bütün parametrlər ifadə ola bilər. Qaytarma dəyərinin növü ilk təsdiqləyici elementin növünə - parametrə bərabərdir comp 1. İfadə ifadəsi 1 dolayısı ilə comp parametrinin məlumat növünə çevrilir1. Bütün digər mövcud komp parametrləri 1...kompN həm də dolayısı ilə komp tipinə çevrilir 1. DECODE NULL dəyərini digər NULL qiymətinə bərabər hesab edir, yəni. ifadə1 NULL və comp3 NULL və comp2 NULL deyilsə, iftrue3 qaytarılır. Gəlin bir neçə nümunəyə baxaq

Sorğu 1: ​​ikilidən deşifrəni seçin (1234, 123, '123 uyğundur');

Sorğu 2: ikilidən deşifrəni seçin (1234, 123, '123 uyğundur', 'Uyğunluq yoxdur');

Sorğu 3: decode seçin('axtarış', 'comp1', 'true1', 'comp2', 'true2', 'search', 'true3', substr('2search', 2, 6), 'true4', ' false') ikilidən;

Birinci sorğu 1234 və 123 dəyərini müqayisə edir. Onlar bərabər olmadığı üçün iftrue1 nəzərə alınmır və iffalse dəyəri müəyyən edilmədiyi üçün NULL qaytarılır. iffalse dəyərinin müəyyən edilməsi istisna olmaqla, ikinci sorğu sorğu 1 ilə eynidir. 1234 123-ə bərabər olmadığı üçün iffalse - 'Uyğunluq yoxdur' qaytarır. Üçüncü sorğu, axtarış dəyərinə uyğun olmaq üçün parametr dəyərlərini yoxlayır. Comp1 və comp2 parametrləri 'axtarış'a bərabər deyil, buna görə iftrue1 və iftrue2 nəticələri atlanır. Comp3 elementinin üçüncü müqayisə əməliyyatında uyğunluq tapılır (parametr mövqeyi 6) və iftrue3 (parametr 7) 'true3'ə bərabər olan dəyəri qaytarılır. Uyğunluq tapıldığı üçün daha hesablamalar aparılmır. Yəni, comp4 (parametr 8) dəyərinin də ifadə1 ilə uyğun olmasına baxmayaraq, əvvəlki müqayisədə uyğunluq tapıldığı üçün bu ifadə heç vaxt hesablanmır.

CASE ifadəsi

Bütün üçüncü və dördüncü nəsil proqramlaşdırma dilləri iş konstruksiyasını həyata keçirir. DECODE funksiyası kimi, CASE ifadəsi if-then-else məntiqini həyata keçirməyə imkan verir. CASE ifadəsindən istifadə etmək üçün iki seçim var. Sadə CASE ifadəsi mənbə elementini bir dəfə müqayisə etmək üçün təyin edir və sonra bütün zəruri test şərtlərini sadalayır. Kompleks (axtarılmış) CASE hər bir şərt üçün hər iki ifadəni qiymətləndirir.

CASE ifadəsi üç tələb olunan parametrə malikdir. İfadə sintaksisi növündən asılıdır. Sadə CASE ifadəsi üçün bu belə görünür

CASE search_expr

ZAMAN müqayisə_ifadə1 SONRA iftrue1

)

TRUNC funksiyası m onluq yerlərə kəsilmiş n rəqəmini qaytarır. m parametri müəyyən edilə bilməz, bu halda n tam ədədə kəsilir.

SEÇİN TRUNC(100.25678) X1, TRUNC(-100.25678) X2, TRUNC(100.99) X3,

TRUNC(100.25678, 2) X4

DUALDAN

Funksiya SIGN(n)

SIGN funksiyası ədədin işarəsini təyin edir. Əgər n müsbətdirsə, onda funksiya 1-i qaytarır. Əgər n mənfidirsə, -1 qaytarır. Əgər sıfıra bərabərdirsə, onda 0 qaytarılır. Məsələn:

SEÇ İŞARƏSİ(100.22) X1, BÜŞƏRƏNİ(-100.22) X2, İŞARƏSİ(0) X3

DUALDAN

Bu funksiyanın maraqlı xüsusiyyəti, 0-a bölünmə xətası yaratmadan sıfıra bərabər m ötürmə qabiliyyətidir.

Funksiya POWER(n, m)

POWER funksiyası n sayını m gücünə qaldırır. Dərəcə fraksiya və mənfi ola bilər ki, bu da bu funksiyanın imkanlarını əhəmiyyətli dərəcədə genişləndirir.

GÜCÜ SEÇİN(10, 2) X1, POWER(100, 1/2) X2,

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

DUALDAN

X1 X2 X3 X4
100 10 10 0,1

Bəzi hallarda bu funksiyanı çağırarkən istisna baş verə bilər. Misal üçün:

GÜCÜ SEÇİN(-100, 1/2) X2

DUALDAN

Bu halda, mənfi ədədin kvadrat kökünü hesablamağa cəhd edilir ki, bu da ORA-01428 "Arqument diapazondan kənarda" xətası ilə nəticələnəcək.

SQRT funksiyası(n)

Bu funksiya n-in kvadrat kökünü qaytarır. Misal üçün:

SQRT(100) X SEÇİN

DUALDAN

EXP(n) və LN(n) funksiyaları

EXP funksiyası e-ni n gücünə qaldırır və LN funksiyası n-in təbii loqarifmini hesablayır (n sıfırdan böyük olmalıdır). Misal:

EXP(2) X1, LN(1) X2, LN(EXP(2)) X3 SEÇİN

NVL funksiyası

NVL funksiyası ümumiyyətlə ən çox istifadə olunur. Funksiya iki parametr alır: NVL(expr1, expr2). İlk parametr expr1 NULL deyilsə, funksiya öz dəyərini qaytarır. Birinci parametr NULL olarsa, funksiya yerinə ikinci parametrin dəyərini qaytarır expr2.

Praktik bir nümunəyə baxaq. EMP cədvəlindəki COMM sahəsində NULL dəyərlər ola bilər. Belə bir sorğu yerinə yetirərkən:

EMPNO, ENAME, COMM, NVL(COMM, 0) NVL_COMM SEÇİN

SCOTT.EMP-DƏN

NULL dəyəri sıfırla əvəz olunacaq. Qeyd edək ki, bir funksiyadan istifadə edərək dəyər yaradıldıqda ona ləqəb verilir. Sorğunun nəticələri belə görünəcək:

EMPNO ENAME COMM NVL_COMM
7369 SMITH 0
7499 ALLEN 300 300
7521 RAD 500 500
7566 JONES 0
7654 MARTIN 1400 1400
7698 BLAKE 0
7782 KLARK 0
7839 KRAL 0
7844 TURNER 0 0
7900 CEYMS 0
7902 FORD 0
7934 MİLLER 0

Funksiya CEIL(n)

CEIL funksiyası parametr kimi ötürülən n ədədindən böyük və ya ona bərabər olan ən kiçik tam ədədi qaytarır. Misal üçün:

CEIL(100) X1, CEIL(-100) X2, CEIL(100.2) X3 , CEIL(-100.2) X4 SEÇİN

DUALDAN

TRUNC funksiyası(n [,m])

TRUNC funksiyası m onluq yerlərə kəsilmiş n rəqəmini qaytarır. m parametri müəyyən edilə bilməz, bu halda n tam ədədə kəsilir.

SEÇİN TRUNC(100.25678) X1, TRUNC(-100.25678) X2, TRUNC(100.99) X3,

TRUNC(100.25678, 2) X4

DUALDAN

Funksiya SIGN(n)

SIGN funksiyası ədədin işarəsini təyin edir. Əgər n müsbətdirsə, onda funksiya 1-i qaytarır. Əgər n mənfidirsə, -1 qaytarır. Əgər sıfıra bərabərdirsə, onda 0 qaytarılır. Məsələn:

SEÇ İŞARƏSİ(100.22) X1, BÜŞƏRƏNİ(-100.22) X2, İŞARƏSİ(0) X3

DUALDAN

Bu funksiyanın maraqlı xüsusiyyəti, 0-a bölünmə xətası yaratmadan sıfıra bərabər m ötürmə qabiliyyətidir.

Funksiya POWER(n, m)

POWER funksiyası n sayını m gücünə qaldırır. Dərəcə fraksiya və mənfi ola bilər ki, bu da bu funksiyanın imkanlarını əhəmiyyətli dərəcədə genişləndirir.

GÜCÜ SEÇİN(10, 2) X1, POWER(100, 1/2) X2,

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

DUALDAN

X1 X2 X3 X4
100 10 10 0,1

Bəzi hallarda bu funksiyanı çağırarkən istisna baş verə bilər. Misal üçün:

GÜCÜ SEÇİN(-100, 1/2) X2

DUALDAN

Bu halda, mənfi ədədin kvadrat kökünü hesablamağa cəhd edilir ki, bu da ORA-01428 "Arqument diapazondan kənarda" xətası ilə nəticələnəcək.

SQRT funksiyası(n)

Bu funksiya n ədədinin kvadrat kökünü qaytarır. Misal üçün:

SQRT(100) X SEÇİN

DUALDAN

EXP(n) və LN(n) funksiyaları

EXP funksiyası e-ni n gücünə qaldırır və LN funksiyası n-in təbii loqarifmini hesablayır (n sıfırdan böyük olmalıdır). Misal:

EXP(2) X1, LN(1) X2, LN(EXP(2)) X3 SEÇİN

Rəqəmlərlə TO_CHAR funksiyası

Verilənləri digər məlumat növlərinə çevirmək üçün funksiyalar. TO_CHAR(nömrə) rəqəmi mətnə ​​çevirir. TO_NUMBER(sətir) mətni rəqəmə çevirir.

SELECT TO_CHAR (123) FROM DUAL 123 sətrini, SELECT TO_NUMBER (`12345") FROM DUAL 12345 rəqəmini qaytaracaq.

Laboratoriya işi. Çıxış nömrəsi formatının dəyişdirilməsi

Oracle SQL-də ədədi dəyərlərin formatında dəyişikliklər, ədədi dəyərlərlə işləmək üçün TO_CHAR funksiyası.

Məşq:

Şəkildə göstərilən formatda hr.employees cədvəlindən işçilərin adı, soyadı və əmək haqqı haqqında məlumatları əks etdirən bir sorğu yazın. 3.4-1:

düyü. 3.4 -1

Bu halda məlumatlar elə çeşidlənməlidir ki, ən yüksək əmək haqqı alan işçilər üçün sətirlər birinci göstərilsin.

Qeyd:

Şəkildəki bəzi əmək haqqı dəyərləri. 3.4-1 dəyişdirilib, ona görə də onlar dəyərlərinizlə eyni olmaya bilər.

Həll:

Ad_adını "Ad" KİMİ, soyadı "Soyadı" KİMİ SEÇİN, TO_CHAR (MAŞAĞI, "L999999999.99") "Əmək haqqı" kimi hr.işçilərdən SİFARİŞ ƏMƏK SİPARİŞİ.

TO_NUMBER və TO_DATE funksiyaları

Sətri TO_DATE tarixinə çevirmək funksiyası (sətir, format). Mümkün format dəyərləri artıq yuxarıda müzakirə edilmişdir, buna görə də bu funksiyadan istifadə etmək üçün bir neçə nümunə verəcəyəm. Nümunələr:

SEÇİN TO_TARİH("01/01/2010", `GG.AA.YYYY") FROM DUAL "01/01/2010" tarixini qaytaracaq;

SEÇİN TO_TARİX("01.YAN.2010", `GG.PAZ.YYYY") FROM DUAL "01/01/2009" tarixini qaytaracaq;

SEÇİN TO_DATE("15-01-10", `GG-AA-YY") FROM DUAL "01/15/2010" tarixini qaytaracaq.

Sətri TO_NUMBER (sətir, format) ədədi dəyərə çevirmək funksiyası. Ən ümumi format dəyərləri cədvəldə verilmişdir, buna görə də nümunələrdən istifadə edərək bu funksiyanın istifadəsinə baxaq. Nümunələr:

SEÇİN TO_NUMBER(`100") FROM DUAL 100 SEÇ TO_NUMBER (`0010.01, "9999D99") rəqəmini qaytaracaq FROM DUAL 10.01 nömrəsini qaytaracaq;

SEÇİN TO_NUMBER("500,000", "999G999") FROM DUAL 500000 rəqəmini qaytaracaq.

Tarix formatında RR elementi

RR datetime format elementi YY datetime format elementinə bənzəyir, lakin digər əsrlərdə tarix dəyərlərini saxlamaq üçün əlavə rahatlıq təmin edir. RR datetime format elementi ilin yalnız son iki rəqəmini göstərməklə 20-ci əsrin tarixlərini 21-ci əsrdə saxlamağa imkan verir.

Cari ilin son iki rəqəmi 00-dan 49-a qədərdirsə, geri qaytarılan il cari illə eyni ilk iki rəqəmə malikdir.

Cari ilin son iki rəqəmi 50-dən 99-a qədərdirsə, qaytarılan ilin ilk 2 rəqəmi cari ilin ilk 2 rəqəmindən 1 böyükdür.

Əgər cari ilin son iki rəqəmi 00-dan 49-a qədərdirsə, qaytarılan ilin ilk 2 rəqəmi cari ilin ilk 2 rəqəmindən 1 azdır.

Cari ilin son iki rəqəmi 50-dən 99-a qədərdirsə, geri qaytarılan il cari illə eyni ilk iki rəqəmə malikdir.

NVL funksiyası

NVL funksiyası ümumiyyətlə ən çox istifadə olunur. Funksiya iki parametr alır: NVL (expr1, expr2). İlk parametr expr1 NULL deyilsə, funksiya öz dəyərini qaytarır. Birinci parametr NULL olarsa, funksiya yerinə ikinci parametrin dəyərini qaytarır expr2.

Nümunə: Təchizatçılardan NVL (təchizatçı_şəhər, n/a") seçin:

Təchizatçı_şəhər sahəsində sıfır dəyər varsa, yuxarıdakı SQL ifadəsi n/" qaytaracaq. Əks halda, təchizatçı_şəhər dəyərini qaytaracaq.

Oracle/PLSQL-də NVL funksiyasından istifadənin başqa bir nümunəsi:

təchizatçılardan təchizatçı_id, NVL (təchizatçı_adı, təchizatçı_adı) seçin.

Bu SQL ifadəsi qayıdacaq Təchizatçı adı sahə əgər təchizatçı_dec null dəyəri ehtiva edir. Əks halda geri qayıdacaq təchizatçı_dec.

Son nümunə: Oracle/PLSQL-də NVL funksiyasından istifadə: satışdan NVL(komissiya, 0) seçin;

Bu SQL ifadəsi əgər 0 dəyərini qaytardı komissiya Sahədə null dəyəri var. Əks halda geri qaytarılacaqdı komissiyalar sahə.

Müxtəlif məlumat növləri üçün NVL çevrilmələri

Null dəyərini həqiqi dəyərə çevirmək üçün NVL funksiyasından istifadə edin: NVL ( ifadə1, ifadə2), Harada:

ifadə1- Müəyyən edilməmiş orijinal və ya hesablanmış dəyər.

ifadə2- Müəyyən edilməmiş dəyərlə əvəz olunan dəyər.

Qeyd: NVL funksiyası istənilən məlumat növünü çevirmək üçün istifadə edilə bilər, lakin nəticə həmişə olduğu kimi eyni tip olacaqdır ifadə1.

üçün NVL çevrilməsi müxtəlif növlər:

NÖMRƏ - NVL (rəqəm sütunu, 9).

CHAR və ya VARCHAR2 - NVL (simvollar|sütun,"Mövcud deyil").

Laboratoriya işi. NVL funksiyasından istifadə

Oracle SQL-də null dəyərlərlə işləmək üçün NVL funksiyası.

Məşq:

hr.employees cədvəlindən işçinin adı və soyadı məlumatını, həmçinin işçi üçün komissiya dərəcəsini (KOMISSION_PCT sütunu) əks etdirən sorğu yazın. Bu zaman komissiya müəyyən edilməmiş işçilər üçün 0 dəyəri göstərilməlidir.Sorunun nəticəsi Şəkildə göstərildiyi kimi olmalıdır. 3.5-1.

düyü. 3.5 -1 (dəyərlər 51-ci sətirdən başlayaraq göstərilir)

Həll:

Müvafiq sorğu kodu belə ola bilər:

ad_adını "Ad" AS SEÇİN, soyadı "Soyad" kimi, NVL (COMMISSION_PCT, 0) hr.employees FROM "Komissiya dərəcəsi" kimi.




Üst