SELECT ifadəsindəki ifadələr budaqlanır. TO_NUMBER və TO_DATE Fərqli Məlumat Növləri üçün NVL Dönüşümləri

Nömrələrlə TO_CHAR funksiyası

Məlumatları digər məlumat növlərinə çevirmək üçün funksiyalar. TO_CHAR (nömrə) bir nömrəni mətnə ​​çevirir. TO_NUMBER (simli) mətni rəqəmə çevirir.

SELECT TO_CHAR (123) FROM DUAL 12345, SELECT TO_NUMBER (`12345") FROM DUAL 12345 qaytaracaq.

Laboratoriya işləri. Göstərilən nömrələrin formatının dəyişdirilməsi

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

Məşq:

İşçilər üçün ad, soyad və maaş məlumatlarını hr.employables cədvəlindən Şəkil 1 -də göstərilən formatda göstərən bir sorğu yazın. 3.4-1:

Pirinç. 3.4 -1

Bu vəziyyətdə, məlumatlar ən yüksək maaş alan işçilər üçün ilk sətirlərin göstəriləcəyi şəkildə sıralanmalıdır.

Qeyd:

Şəkildə bəzi əmək haqqı dəyərləri. 3.4-1 dəyişdirildi, buna görə dəyərlərinizə uyğun gələ bilməz.

Həll:

SEÇİN ad_adı "Ad" olaraq, soyadı "Soyad" olaraq, TO_CHAR (MƏCRƏBİ, "L999999999.99") SAAT TƏCİLİNDƏN SİFARİŞ EDİN "Əmək haqqı" Olaraq.

TO_NUMBER və TO_DATE funksiyaları

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

SEÇİN TO_DATE ("01.01.2010", `GG.MM.YYYY") BURADAN DUAL, "01.01.2010" tarixini qaytaracaq;

SEÇİN TO_DATE ("01.JAN.2010", `GG.MON.YYYY") BURADAN DUAL, "01.01.2009" tarixini qaytaracaq;

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

Stringdən stringə çevrilmə funksiyası ədədi dəyər TO_NUMBER (simli, format). Ən çox yayılmış format dəyərləri cədvəldə verilmişdir, buna görə də bu funksiyanın istifadəsini nümunələrlə nəzərdən keçirək. Nümunələr:

SEÇİN TO_NUMBER ("100") BURADAN DUAL 100 SELECT TO_NUMBER nömrəsini qaytaracaq (`0010.01", "9999D99") BURADAN DUAL 10.01 nömrəsini qaytaracaq;

SEÇİN TO_NUMBER ("500,000", "999G999") BURADAN DUAL 500000 qaytaracaq.

Tarix formatında RR elementi

RR tarix və saat formatı elementi YY tarix və saat 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ərərək 20 -ci əsrdən 21 -ci əsrə qədər olan tarixləri saxlamağa imkan verir.

Cari ilin son iki rəqəmi 00 ilə 49 arasındadırsa, qaytarılmış il cari ilin eyni ilk iki rəqəminə malikdir.

Cari ilin son iki rəqəmi 50 ilə 99 arasındadırsa, qaytarılmış ilin ilk 2 rəqəmi cari ilin ilk 2 rəqəmindən 1 böyükdür.

Cari ilin son iki rəqəmi 00 ilə 49 arasındadırsa, qaytarılmış 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 ilə 99 arasındadırsa, qaytarılmış il cari ilin eyni ilk iki rəqəminə malikdir.

NVL funksiyası

NVL funksiyası ümumiyyətlə ən çox istifadə olunur. Funksiya iki parametr alır: NVL (expr1, exp2). Əgər expr1 -in ilk parametri NULL deyilsə, funksiya öz dəyərini qaytarır. Birinci parametr NULL olarsa, funksiya əvəzinə exp2 ikinci parametrin dəyərini qaytarır.

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

Supplier_city sahəsi varsa yuxarıdakı SQL ifadəsi n / "qaytaracaq sıfır dəyəri... Əks təqdirdə, 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çı_kimi, NVL (təchizatçı_deski, təchizatçı_adı) seçin.

Bu SQL ifadəsi geri qayıdacaq Təchizatçı adıəgər sahə təchizatçı_dest sıfır dəyəri ehtiva edir. Əks təqdirdə geri qayıdacaq təchizatçı_dest.

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

Bu SQL ifadəsi 0 qaytarırsa komissiya sahəsində null dəyər var. Əks təqdirdə geri dönərdi komissiya sahə.

Fərqli məlumat növləri üçün NVL dönüşümləri

NVL funksiyası qeyri -müəyyən bir dəyəri həqiqi bir dəyərə çevirmək üçün istifadə olunur: NVL ( ifadə1, ifadə 2), harada:

ifadə1- Müəyyən edilə bilməyən 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, amma nəticə həmişə eyni ilə eyni olacaq ifadə1.

NVL -ni çevir fərqli 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şləri. NVL funksiyasının tətbiqi

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

Məşq:

İşçilərin adları və soyadları haqqında məlumatları göstərən bir sorğu yazın. Cədvəl, habelə işçi üçün komissiya dərəcəsi (COMMISSION_PCT sütunu). Bu vəziyyətdə, komissiya təyin edilməyən işçilər üçün 0 dəyərini göstərməlisiniz. Sorğunun nəticəsi Şekildə göstərildiyi kimi olmalıdır. 3.5-1.

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

Həll:

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

Hr.emplo əməkdaşlarından "Komissiya dərəcəsi" olaraq "Ad", soyad "Soyad", NVL (COMMISSION_PCT, 0) Olaraq SEÇİN.

NVL funksiyası

NVL funksiyası ümumiyyətlə ən çox istifadə olunur. Funksiya iki parametr alır: NVL (expr1, expr2). Əgər expr1 -in ilk parametri NULL deyilsə, funksiya öz dəyərini qaytarır. Birinci parametr NULL olarsa, funksiya əvəzinə ikinci parametr expr2 -nin dəyərini qaytarır.

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

EMPNO, ENAME, COMM, NVL (COMM, 0) NVL_COMM seçin

SCOTT.EMP -dən

NULL dəyəri sıfırla əvəz olunacaq. Diqqət yetirin ki, bir funksiyanı istifadə edərək dəyər yaratsanız, ona başqa ad verilir. Sorğunun nəticələri belə olacaq:

EMPNO ENAME COMM NVL_COMM
7369 SMITH 0
7499 ALLEN 300 300
7521 WARD 500 500
7566 JONES 0
7654 MARTİN 1400 1400
7698 BLAKE 0
7782 CLARK 0
7839 KRAL 0
7844 TURNER 0 0
7900 JAMES 0
7902 FORD 0
7934 MILLER 0

CEIL (n) funksiyası

CEIL funksiyası, parametr olaraq verilən n sayından böyük və ya ona bərabər olan ən kiçik tam ədədini qaytarır. Misal üçün:

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

DUALDAN

TRUNC funksiyası (n [, m])

TRUNC funksiyası m ədəd kəsrinə kəsilmiş n sayını qaytarır. M parametri buraxıla bilər - bu halda n tam ədədlə kəsilir.

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

TRUNC (100.25678, 2) X4

DUALDAN

SIGN (n) funksiyası

SIGN funksiyası bir rəqəmin işarəsini təyin edir. Əgər n müsbət olarsa, funksiya 1 -ə qayıdır, n mənfi olarsa -1 qaytarılır. Sıfıra bərabərdirsə, 0 qaytarılır. Məsələn:

İŞARƏT SEÇ (100.22) X1, İŞARET (-100.22) X2, İŞARƏT (0) X3

DUALDAN

Bu funksiyanın maraqlı bir xüsusiyyəti m -ni sıfıra bərabər ötürmək qabiliyyətidir - bu halda 0 -a bölünmə yoxdur.

POWER (n, m) funksiyası

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

GÜÇ SEÇ (10, 2) X1, GÜÇ (100, 1/2) X2,

GÜÇ (1000, 1/3) X3, GÜÇ (1000, -1/3) X4

DUALDAN

X1 X2 X3 X4
100 10 10 0,1

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

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

DUALDAN

V bu məsələ-nin kvadrat kökünü hesablamağa cəhd edilir mənfi nömrə, ORA-01428 "Arqument aralığında" xətası ilə nəticələnəcək.

SQRT (n) funksiyası

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

SQRT SEÇ (100) X

DUALDAN

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

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

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

NVL funksiyası

NVL funksiyası ümumiyyətlə ən çox istifadə olunur. Funksiya iki parametr alır: NVL (expr1, expr2). Əgər expr1 -in ilk parametri NULL deyilsə, funksiya öz dəyərini qaytarır. Birinci parametr NULL olarsa, funksiya əvəzinə ikinci parametr expr2 -nin dəyərini qaytarır.

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

EMPNO, ENAME, COMM, NVL (COMM, 0) NVL_COMM seçin

SCOTT.EMP -dən

NULL dəyəri sıfırla əvəz olunacaq. Diqqət yetirin ki, bir funksiyanı istifadə edərək dəyər yaratsanız, ona başqa ad verilir. Sorğunun nəticələri belə olacaq:

EMPNO ENAME COMM NVL_COMM
7369 SMITH 0
7499 ALLEN 300 300
7521 WARD 500 500
7566 JONES 0
7654 MARTİN 1400 1400
7698 BLAKE 0
7782 CLARK 0
7839 KRAL 0
7844 TURNER 0 0
7900 JAMES 0
7902 FORD 0
7934 MILLER 0

CEIL (n) funksiyası

CEIL funksiyası, parametr olaraq verilən n sayından böyük və ya ona bərabər olan ən kiçik tam ədədini qaytarır. Misal üçün:

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

DUALDAN

TRUNC funksiyası (n [, m])

TRUNC funksiyası m ədəd kəsrinə kəsilmiş n sayını qaytarır. M parametri buraxıla bilər - bu halda n tam ədədlə kəsilir.

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

TRUNC (100.25678, 2) X4

DUALDAN

SIGN (n) funksiyası

SIGN funksiyası bir rəqəmin işarəsini təyin edir. Əgər n müsbət olarsa, funksiya 1 -ə qayıdır, n mənfi olarsa -1 qaytarılır. Sıfıra bərabərdirsə, 0 qaytarılır. Məsələn:

İŞARƏT SEÇ (100.22) X1, İŞARET (-100.22) X2, İŞARƏT (0) X3

DUALDAN

Bu funksiyanın maraqlı bir xüsusiyyəti m -ni sıfıra bərabər ötürmək qabiliyyətidir - bu halda 0 -a bölünmə yoxdur.

POWER (n, m) funksiyası

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

GÜÇ SEÇ (10, 2) X1, GÜÇ (100, 1/2) X2,

GÜÇ (1000, 1/3) X3, GÜÇ (1000, -1/3) X4

DUALDAN

X1 X2 X3 X4
100 10 10 0,1

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

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

DUALDAN

Bu halda, ORA-01428 "Arqument aralığında" xətası ilə nəticələnəcək mənfi ədədin kvadrat kökünü hesablamaq cəhdi edilir.

SQRT (n) funksiyası

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

SQRT SEÇ (100) X

DUALDAN

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

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

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

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

Daxili funksiyalar

Daxil edilmiş funksiyalar bir funksiyanın qaytarılma 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ə, bir funksiya çağırışının nəticəsini başqa bir funksiyaya zəng etmək üçün parametr olaraq istifadə edərkən hərfi bir dəyər kimi qəbul edə bilərsiniz. Daxili funksiyalar istənilən yuvalama səviyyəsinə yerləşdirilə bilər. Bir funksiya çağırışı belə görünür

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

Bir funksiya parametrini başqa bir 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)

Daxil edilmiş funksiyalar əvvəlcə nəticələri digər funksiyalara giriş kimi istifadə edilməzdən əvvəl qiymətləndirilir. Funksiyalar ən dərin yuvalama səviyyəsindən ən yüksək səviyyəyə, soldan sağa doğru qiymətləndirilir. Əvvəlki ifadə aşağıdakı kimi icra olunur

  1. F3 funksiyası (param1) hesablanır və qaytarılma dəyəri 2 funksiyası üçün üçüncü parametr olaraq istifadə olunur, buna param2 deyək.
  2. Sonra F2 funksiyası (param1, param2.2, param2.3) hesablanır və qaytarılma dəyəri F1 funksiyasının ikinci parametri - param1.2 kimi istifadə olunur.
  3. Nəhayət, F1 funksiyası (param1, param2, param1.3) qiymətləndirilir və zəng proqramına qaytarılır.

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

Müraciəti nəzərdən keçirin

dual -dan next_day (last_day (sysdate) -7, 'tue') seçin;

  1. Bu sorğuda aşağıdan yuxarıya doğru üç funksiya var - SYSDATE, LAST_DAY, NEXT_DAY. Sorğu aşağıdakı kimi yerinə yetirilir
  2. Ən iç içə SYSDATE funksiyası yerinə yetirilir. Cari sistem vaxtını qaytarır. Tutaq ki, cari tarix 28 oktyabr 2009 -cu ildir
  3. Sonra, LAST_DAY ikinci səviyyəli funksiyanın nəticəsi hesablanır. LAST_DATE ('28 -OCT -2009 '), 31 Oktyabr 2009 -cu il olan oktyabrın son gününü qaytarır.
  4. Sonra bu tarixdən yeddi gün çıxılır - 24 Oktyabr çıxır.
  5. Nəhayət, NEXT_DAY ('24 -OCT-2009 ',' tue ') funksiyası qiymətləndirilir və sorğu oktyabrın son çərşənbə axşamı-nümunəmizdə 27-OCT-2009-u qaytarır.

Bir çox yuvalı funksiya zənglərindən istifadə edərək kompleks ifadələri başa düşmək və qurmaq kifayət qədər çətindir, lakin bu zaman və təcrübə ilə gəlir. Bu cür ifadələri hissələrə ayırıb ayrı -ayrılıqda sınaya bilərsiniz. DUAL cədvəli sorğuları və funksional zəngləri yoxlamaq üçün çox faydalıdır. Kiçik komponentləri sınaqdan keçirə və düzəldə bilərsiniz, sonra da böyük bir istədiyiniz ifadəyə birləşdirilə bilər.

Filial funksiyaları

IF-THEN-ELSE olaraq da bilinən budaqlanma funksiyaları bəzi şərtlərə əsaslanaraq icra yolunu təyin etmək üçün istifadə olunur. Şaxələnmə funksiyaları bir şərtin qiymətləndirilməsi nəticəsinə əsasən fərqli nəticələr verir. Bu cür funksiyalar qrupunda NULL dəyərlərlə işləmə funksiyaları fərqlənir: NVL, NVL2, NULLIF və COALESCE. Həm də DECODE funksiyası və CASE ifadəsi ilə təmsil olunan ümumi funksiyalar. DECODE funksiyası Oracle funksiyasıdır, CASE ifadəsi ANSI SQL standartında mövcuddur.

NVL funksiyası

NVL funksiyası, NULL üçün hər hansı bir məlumat növünün bir sütununun və ya ifadəsinin dəyərini yoxlayır. Dəyər NULL olarsa, alternativ qeyri-sıfır dəyərini qaytarır; əks halda, orijinal dəyər qaytarılır.

NVL funksiyasının iki tələb olunan parametri var və sintaksisi NVL -dir (orijinal, ifnull), orjinal orijinal yoxlanılacaq orijinal dəyərdir və ifnull, orijinal NULL olarsa funksiya tərəfindən qaytarılır. 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 məlumat tipinin dəyərini qaytarır. Üç müraciəti nəzərdən keçirin

Sorğu 1: ​​ikili arasından nvl (1234) seçin;

2 -ci sorğu: cütdən nvl (null, 1234) seçin;

3 -cü sorğu: cütdən nvl (substr ('abc', 4), 'Alt sətir yoxdur') seçin;

NVL funksiyası iki parametr tələb etdiyi üçün 1-ci sorğu ORA-00909 qaytaracaq: arqument sayı etibarsızdır. NULL yoxlanıldığından və NULL olduğundan sorğu 2 1234 qaytaracaq. Üçüncü sorğu, dörd simvolu üç xarakterli bir sətirdən çıxarmağa çalışan, NULL qaytaran və NVL funksiyası ‘No sbustring exists’ sətrini qaytaran daxili SUBSTR funksiyasından istifadə edir.

NVL funksiyası ədədlərlə işləyərkən çox faydalıdır. NULL dəyərlərini 0 -a çevirmək üçün istifadə olunur arifmetik əməliyyatlarədədlər NULL qaytarmadı

NVL funksiyası2

NVL2, NVL -dən daha çox funksionallıq təmin edir, eyni zamanda NULL dəyərlərini də idarə edir. NULL üçün hər hansı bir növ bir sütunun və ya ifadənin dəyərini yoxlayır. Dəyər NULL deyilsə, ikinci parametr qaytarılır, əks halda üçüncü parametr, bu vəziyyətdə orijinal dəyəri qaytaran NVL funksiyasından fərqli olaraq qaytarılır.

NVL2 funksiyası üç tələb olunan parametrə və NVL2 sintaksisinə (orijinal, ifnotnull, ifnull) malikdir, burada orijinal yoxlanılacaq dəyərdir, ifnotnull orijinal NULL deyilsə qaytarılmış dəyərdir və orijinal sıfır olduqda ifnull qaytarılmış dəyərdir. İfnotnull və ifnull parametrlərinin məlumat növləri uyğun olmalıdır və LONG tipli ola bilməz. NVL2 funksiyası tərəfindən qaytarılmış məlumat növü ifnotnull parametrinin məlumat tipinə bərabərdir. Bəzi nümunələrə baxaq

1 -ci sorğu: ikili seçimdən nvl2 (1234, 1, 'a string') seçin;

2 -ci sorğu: cütdən nvl2 (null, 1234, 5678) seçin;

3 -cü sorğu: nvl2 (substr ('abc', 2), 'bc deyil', 'Substring yoxdur') ikili seçin;

1 -ci sorğudakı ifnotnull parametri bir rəqəmdir və ifnull parametri bir sətirdir. Məlumat növləri uyğun olmadığı üçün "ORA-01722: etibarsız nömrə" xətası qaytarılır. İki sorğu ifnull parametrini qaytarır, çünki orijinal NULL və nəticə 5678 -dir. Üçüncü sorğu 'bc' qaytaran və NVL2 ('bc', 'bc deyil', 'Substring yoxdur') çağıran SUBSTR funksiyasından istifadə edir. ifnotnull parametri - 'bc deyil'.

NULLIF funksiyası

NULLIF funksiyası şəxsiyyət üçün iki dəyəri sınayır. Əgər onlar eynidirsə, NULL qaytarılır, əks halda birinci parametr qaytarılır. NULLIF funksiyası iki tələb olunan parametrə və NULLIF sintaksisinə malikdir (ifunequal, müqayisə_item). Funksiya iki parametri müqayisə edir və eynidirsə - NULL qaytarılır, əks halda ifunequal parametri. İstəkləri nəzərə alın

1 -ci sorğu: ikili arasından nullif (1234, 1234) seçin;

Parametrlər eyni olduğu üçün bir sorğu NULL qaytarır. 2 -ci sorğudakı sətirlər tarixə çevrilmir, lakin sətirlər kimi müqayisə edilir. Strings fərqli uzunluqlarda olduğu üçün ifunequal 24-JUL-2009 qaytarılır.

Şəkil 10-4-də NULLIF funksiyası NVL2 funksiyası daxilində yuvalanmışdır. NULLIF funksiyası, öz növbəsində ifunequal parametrindəki ifadənin bir hissəsi olaraq SUBSTR və UPPER funksiyalarından istifadə edir. E -poçt sütunu, adı 4 simvoldan ibarət olan işçilər üçün soyadla birləşdirilmiş adın ilk hərfini qaytaran bu ifadə ilə müqayisə olunur. Bu dəyərlər bərabər olduqda, NULLIF NULL, dəyər isə ifunequal parametrinin dəyərini qaytaracaq. Bu dəyərlər NVL2 funksiyası üçün bir parametr olaraq istifadə olunur. NVL2, öz növbəsində, müqayisə olunan maddələrin uyğun olub -olmadığını izah edir.

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

COALESCE funksiyası

COALESCE funksiyası parametrlər siyahısından ilk NULL olmayan dəyəri qaytarır. Bütün parametrlər NULL olarsa, NULL qaytarılır. COALESCE funksiyası iki tələb olunan parametrə və istədiyiniz qədər çox əlavə parametrə malikdir və əgər expr NULL deyilsə nəticənin expr1 olduğu COALESCE sintaksisi (expr1, expr2, ..., exprn), əks halda expr2 qaytarılır. NULL və s. COALESCE iç içə NVL funksiyalarına bərabərdir

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

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

NULL olmayan bir dəyər tapılarsa, qaytarılma dəyərinin məlumat növü ilk NULL olmayan dəyərin məlumat tipinə bərabərdir. 'ORA-00932: ziddiyyətli məlumat növləri' səhvinin qarşısını almaq üçün NULL olmayan bütün parametrlər ilk NULL olmayan parametrlə uyğun olmalıdır. Üç nümunəyə baxaq

1 -ci sorğu: cütlükdən birləşməni (null, null, null, 'a string') seçin;

2 -ci sorğu: ikilidən birləşməni (null, null, null) seçin;

3 -cü sorğu: ikilidən birləşməni seçin (substr ('abc', 4), 'bc deyil', 'Substring yoxdur');

1-ci sorğu dördüncü parametri qaytarır: bir simli, çünki bu ilk NULL olmayan parametrdir. Bütün sorğular NULL olduğu üçün iki sorğu NULL qaytarır. 3-cü sorğu birinci parametri qiymətləndirir, NULL dəyərini alır və ikinci parametri qaytarır, çünki ilk NULL olmayan parametrdir.

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

DECODE funksiyası

DECODE funksiyası, bərabərlik üçün ilk iki parametri yoxlayaraq və bərabər olduqda üçüncü dəyəri və ya bərabər olmadıqda başqa bir dəyəri qaytararaq if-then-else məntiqini həyata keçirir. DECODE funksiyası üç tələb olunan parametrə və DECODE sintaksisinə malikdir (expr1, comp1, iftrue1 ,,). Bu parametrlər aşağıdakı yalançı kod nümunəsində göstərildiyi kimi istifadə olunur

IF expr1 = comp1, sonra iftrue1 qaytarın

Əgər expr1 = comp2 olarsa, iftrue2 qaytarın

Əgər exprN = compN olarsa, iftrueN qaytarın

Başqa qayıt NULL | iffalse;

Birincisi, expr1 comp1 ilə müqayisə olunur. Əgər bərabərdirlərsə, iftrue1 qaytarılır. Expr1 comp1 -ə bərabər deyilsə, bundan sonra nə baş verəcəyi comp2 və iftrue2 parametrlərinin təyin olunmasından asılıdır. Verilərsə, expr1 dəyəri comp2 ilə müqayisə olunur. Dəyərlər bərabərdirsə, iftrue2 qaytarılır. Əgər deyilsə, onda compN, iftrueN, expr1 və compN parametrləri cütləri müqayisə olunarsa və iftrueN bərabər olarsa qaytarılır. Parametr dəstlərinin heç birində uyğunluq tapılmadısa, ya bu parametr göstərildiyi təqdirdə ya iffalse qaytarılır, ya da NULL.

DECODE funksiyasındakı bütün parametrlər ifadə ola bilər. Qaytarma növü, ilk təsdiqləyici elementin növünə bərabərdir - parametr komp 1. İfadə expr 1, dolayısıyla comp parametrinin məlumat tipinə çevrilə bilər1. Bütün digər mövcud komp parametrləri 1 ... kompN həm də dolayısıyla komp -ə çevrilə bilər 1. DECODE NULL dəyərini başqa bir NULL dəyərə bərabər hesab edir, yəni. expr1 NULL və comp3 NULL və comp2 NULL deyilsə, iftrue3 qaytarılır. Bəzi nümunələrə baxaq

1 -ci sorğu: cütlükdən deşifrəni seçin (1234, 123, '123 uyğunluqdur');

2 -ci sorğu: cütlükdən deşifrəni seçin (1234, 123, '123 uyğunluqdur', 'Uyğun deyil');

3 -cü sorğu: deşifrəni seçin ('axtarış', 'komp1', 'doğru1', 'komp2', 'doğru2', 'axtarış', 'doğru3', substr ('2search', 2, 6), 'doğru4', ' yalan ') ikili;

Bir sorğu 1234 və 123 dəyərlərini müqayisə edir. Onlar bərabər olmadıqları üçün iftrue1 nəzərə alınmır və iffalse dəyəri təyin olunmadığı üçün NULL qaytarılır. Iffalse göstərilmədiyi təqdirdə, 2 -ci istək 1 -in tələbi ilə eynidir. 1234 123 -ə bərabər olmadığı üçün iffalse - "Uyğunluq yoxdur" qaytarılır. Üç sorğu, axtarış dəyərinə uyğun olub olmadığını yoxlamaq üçün parametr dəyərlərini yoxlayır. Comp1 və comp2 parametrləri "axtarış" deyildir, buna görə iftrue1 və iftrue2 nəticələri atlanır. Uyğunluq, comp3 (parametr mövqeyi 6) üçüncü müqayisəsində tapılır və iftrue3 qaytarma dəyəri (parametr 7) "doğru3" dir. Bir uyğunluq tapıldığından əlavə hesablamalar aparılmır. Yəni comp4 dəyərinin (parametr 8) eyni zamanda expr1 ilə eyni olmasına baxmayaraq, əvvəlki müqayisədə uyğunluq tapıldığından 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şin qurulmasını həyata keçirir. DECODE funksiyası kimi, CASE ifadəsi if-then-else məntiqini tətbiq etməyə imkan verir. CASE ifadəsini istifadə etmək üçün iki seçim var. Sadə bir CASE ifadəsi, mənbəni bir dəfə müqayisə etmək üçün təyin edir və sonra hamısını sadalayır lazımi şərtlərçeklər. Axtarılan 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övdən asılıdır. Sadə bir CASE ifadəsi üçün belə görünür

CASE search_expr

WHEN müqayisə_expr1 SONRA iftrue1

}