SELECT komutundaki şube operatörleri. NVL Farklı Veri Türleri İçin Dönüşüm Laboratuar Çalışması

Function To_Char sayılarla

Veri dönüştürme diğer veri türlerine işlev görür. To_char (sayı) bir numarayı metne dönüştürür. To_number metni numaraya dönüştürür.

Dual'dan To_Char (123) öğesini seçin (123) satırını döndürür, Dual'dan TO_Number (`12345") seçin 12345 numarasını döndürür.

Laboratuvar işi. Çıkış numaralarının biçimini değiştirme

Oracle SQL'deki sayısal değerler biçimindeki değişiklikler, TO_CHAR işlevi sayısal değerlerle çalışmak için.

Görev:

Çalışanların adı, soyadı ve maaşları hakkında bilgi edinecek bir istek yazın. 3.4-1:

İncir. 3.4. -1

Aynı zamanda, veriler en büyük maaşlı çalışanlar için satırların ilk olarak gösterileceği şekilde sıralanmalıdır.

Not:

Şekil 2'deki bazı ücretler. 3.4-1 değiştirildi, böylece değerlerinizle çakışmayabilirler.

Karar:

First_Name "ad", last_name olarak "soyadı", TO_CHAR (SARARY, "L99999999.99" olarak "SARARY" olarak "salata" olarak seçin.

Fonksiyonlar to_number ve to_date

T_Date tarihinde (dize, format) satır dönüştürme işlevi. Olası formatlar yukarıda zaten göz önünde bulundurulur, bu yüzden bu işlevi kullanmanın bazı örnekler vereceğim. Örnekler:

Seçmek To_date (01.01.2010, `dd.mm.yyyy) Dan. İkili, tarihi 01.01.2010 ";

Seçmek To_date (01.jan.2010, `dd.mon.yyyy) Dan. İkili, tarihi 01.01.2009 ";

Seçmek To_date ("15-01-10", `dd-mm-yy") Dan. İkili, 01/15/2010 tarihini döndürecektir. "

Satır dönüşüm fonksiyonu Sayısal değeri TO_Number (string, format). En yaygın formatlar tabloda listelenmiştir, bu nedenle örneklerdeki bu işlevin kullanımını düşünün. Örnekler:

Seçmek To_number (100 ") Dan. İkili, 100 numaralı numarayı döndürür To_Number (`0010.01," 9999D99) Dan. İkili, 10.01 numarasını döndürür;

Seçmek To_number ("500.000", "999G999") Dan. İkili, 500000 numarayı döndürür.

Tarih formatındaki RR öğesi

Tarih ve Saat RR formatının elemanı, YY tarih ve saat formatı öğesine benzerdir, ancak tarih değerlerini ve diğer yüzyıllardaki depolamak için ek esneklik sağlar. RR tarihlerinin ve zaman formatının bir unsuru, 20. yüzyılın tarihlerini 21. yüzyılda yapmanıza olanak tanır ve yılın son iki rakamını belirtir.

Cari yılın son iki figürü 00 ila 49, dönüş yılı, cari yılda olduğu gibi ilk iki basamağa sahiptir.

Cari yılın en son iki rakamının 50 ila 99'a kadar ise, döndürülen yılın ilk 2 hanesi 1, cari yılın ilk 2 hanesinden daha fazladır.

Cari yılın son iki figürü 00 ila 49 ise, döndürülen yılın ilk 2 hanesi, cari yılın ilk 2 hanesinden 1 daha azdır.

Cari yılın son iki rakamının 50 ila 99'a kadar ise, geri dönen yıl, geçerli yılda olduğu gibi ilk iki haneye sahiptir.

Nvl özelliği

NVL işlevi genellikle en sık uygulanır. İşlev iki parametre alır: NVL (Expr1, Exerg2). İlk Expr1 parametresi NULL'ye eşit değilse, işlev değerini döndürür. İlk boş parametre ise, işlev, Exerg2'nin ikinci parametresinin değerini döndürür.

Örnek: Tedarikçilerden NVL (SUCUT_CITY, N / A ") seçin:

SQL deyimi, SUPORT_CITY alanı sıfır değeri içeriyorsa N / "dönecektir. Aksi takdirde, Tower_city değerini döndürür.

Oracle / PLSQL'deki NVL işlevini kullanmanın bir başka örneği:

tedarikçilerden Supplic_ID, NVL (SUICUS_DESC, SUCUP) SELECT.

Bu SQL uygulaması geri dönecek sağlayıcı adı. Eğer alan satıcı_desc. sıfır değer içerir. Aksi takdirde geri dönecek satıcı_desc..

Son Örnek: Oracle / PLSQL'deki NVL işlevini kullanmak: Satışlardan NVL (Komisyon, 0) seçin;

Bu SQL deyimi 0'a döndü komisyon Alan sıfır değeri içerir. Aksi takdirde, geri dönmek mümkün olurdu komisyon alan.

Farklı veri türleri için NVL dönüşümü

Belirsiz bir değeri gerçek fonksiyona dönüştürmek için, NVL işlevi kullanılır: Nvl ( İfade1, İfade 2), nerede:

ifade1- Belirsiz olabilecek kaynak veya hesaplanmış değer.

İfade2. - belirsiz bir değer yerine ikame edilmiş bir değer.

Not: NVL işlevi, herhangi bir veri türünü dönüştürmek için kullanılabilir, ancak sonuç her zaman aynı tip olacaktır. İfade1.

Çeşitli tipler için NVL dönüşümü:

Number - NVL. (Sayısal sütun, 9).

Char veya varchar2 - nvl (Semboller | Sütun, "Müsait değil").

Laboratuvar işi. NVL fonksiyonunun uygulanması

NVL özelliği, Oracle SQL'de belirsiz değerlerle çalışmak için.

Görev:

Personelin ismi ve soyadı HR.InsPloyees tablosundaki adı ve soyadı hakkında bilgi içeren bir istek yazın. Ayrıca, çalışanın için Komisyonun (Sütun Komisyonu_pct) teklifinin yanı sıra. Aynı zamanda, komisyonun tanımlanmadığı çalışanlar için, 0 değerini göstermesi gerekir. Sorgunun sonucu Şekil 2'de sunulması gerektiği gibi olmalıdır. 3.5-1.

İncir. 3.5 -1 (Değerler Satır 51'den başlar)

Karar:

İlgili talebin kodu şöyle olabilir:

First_Name "ad", last_name olarak "soyadı", nvl (komisyon_pct, 0) "komisyon oranı" olarak seçin.

Nvl özelliği

NVL işlevi genellikle en sık uygulanır. İşlev iki parametre alır: NVL (Expr1, Expr2). İlk Expr1 parametresi NULL'ye eşit değilse, işlev değerini döndürür. İlk boş parametre ise, işlev, ikinci Expr2 parametresinin değerini döndürür.

Düşünmek pratik örnek. EMP tablosundaki iletişim alanı boş değerler içerebilir. Formun bir sorgusu yaparken:

Empno, Ename, Comm, NVL (COMM, 0) NVL_COMM'yi seçin.

Scott.emp'den

null değeri sıfırla değiştirilecektir. Lütfen, Değerin Fonksiyonunun Yardımı ile oluşturulması durumunda, bir takma adaya atanır. İstek sonuçları:

Empno. Açı. Comm. Nvl_comm
7369 Smith 0
7499 Allen 300 300
7521 Koğuş 500 500
7566 Jones 0
7654 Martin. 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)

Ceil işlevi, N. sayısına eşit veya daha büyük, en küçük tamsayıyı döndürür. Örneğin:

Ceil (100) X1, Ceen (-100) X2, Ceen (100.2) X3, Ceil (-100.2) X4'ü seçin.

Çift

Trunc Function (n [, m])

Trunc Function, ondalık noktadan sonra M işaretlerini belirten numarayı döndürür. M parametresi belirtilmeyebilir - bu durumda, n bütününe kesildi.

Select Trunc (100.25678) X1, Trunc (-100.25678) X2, Trunc (100.99) X3,

Trunc (100.25678, 2) x4

Çift

İşaret (n) işlevi

İşaret işlevi, sayı sayısını belirler. N pozitifse, işlev döndürürse 1. Negatif döndürülürse -1. Sıfır sıfırsa, 0'a döndürülür. Örneğin:

SELECT işaretini (100.22) x1, işareti (-100.22) x2, işaret (0) x3

Çift

Bu özelliğin ilginç bir özelliği, M'yi sıfıra eşitleme imkanıdır - Bölüm hataları 0 tarafından ortaya çıkmaz.

Güç (n, m) işlevi

Güç işlevi, N sayısını m. Derece, bu fonksiyonun yeteneklerini önemli ölçüde genişleten fraksiyonel ve negatif olabilir.

Gücü seçin (10, 2) X1, Güç (100, 1/2) X2,

Güç (1000, 1/3) X3, Güç (1000, -1/3) X4

Çift

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

Bazı durumlarda, bu özelliği ararken, bir istisna oluşabilir. Örneğin:

Gücü seçin (-100, 1/2) x2

Çift

İÇİNDE bu durum Bir olumsuz sayıdan bir karekoku hesaplamak için bir girişimde bulunulur, bu da bir ORA-01428 hatası "aralığı dışındaki argüman" ile sonuçlanacaktır.

SQRT (n) işlevi

Bu özellik döndürür kare kök N numaradan. Örneğin:

SQRT (100) X'i seçin.

Çift

Fonksiyonlar exp (n) ve ln (n)

Exp işlevi, N derecesine sahiptir ve LN işlevi, doğal logaritmayı N'den (N, N ile sıfırdan daha büyük olmalıdır) hesaplar. Misal:

EXP (2) X1, LN (1) X2, LN (EXP (2)) X3'ü seçin.

Nvl özelliği

NVL işlevi genellikle en sık uygulanır. İşlev iki parametre alır: NVL (Expr1, Expr2). İlk Expr1 parametresi NULL'ye eşit değilse, işlev değerini döndürür. İlk boş parametre ise, işlev, ikinci Expr2 parametresinin değerini döndürür.

Pratik bir örnek düşünün. EMP tablosundaki iletişim alanı boş değerler içerebilir. Formun bir sorgusu yaparken:

Empno, Ename, Comm, NVL (COMM, 0) NVL_COMM'yi seçin.

Scott.emp'den

null değeri sıfırla değiştirilecektir. Lütfen, Değerin Fonksiyonunun Yardımı ile oluşturulması durumunda, bir takma adaya atanır. İstek sonuçları:

Empno. Açı. Comm. Nvl_comm
7369 Smith 0
7499 Allen 300 300
7521 Koğuş 500 500
7566 Jones 0
7654 Martin. 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)

Ceil işlevi, N. sayısına eşit veya daha büyük, en küçük tamsayıyı döndürür. Örneğin:

Ceil (100) X1, Ceen (-100) X2, Ceen (100.2) X3, Ceil (-100.2) X4'ü seçin.

Çift

Trunc Function (n [, m])

Trunc Function, ondalık noktadan sonra M işaretlerini belirten numarayı döndürür. M parametresi belirtilmeyebilir - bu durumda, n bütününe kesildi.

Select Trunc (100.25678) X1, Trunc (-100.25678) X2, Trunc (100.99) X3,

Trunc (100.25678, 2) x4

Çift

İşaret (n) işlevi

İşaret işlevi, sayı sayısını belirler. N pozitifse, işlev döndürürse 1. Negatif döndürülürse -1. Sıfır sıfırsa, 0'a döndürülür. Örneğin:

SELECT işaretini (100.22) x1, işareti (-100.22) x2, işaret (0) x3

Çift

Bu özelliğin ilginç bir özelliği, M'yi sıfıra eşitleme imkanıdır - Bölüm hataları 0 tarafından ortaya çıkmaz.

Güç (n, m) işlevi

Güç işlevi, N sayısını m. Derece, bu fonksiyonun yeteneklerini önemli ölçüde genişleten fraksiyonel ve negatif olabilir.

Gücü seçin (10, 2) X1, Güç (100, 1/2) X2,

Güç (1000, 1/3) X3, Güç (1000, -1/3) X4

Çift

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

Bazı durumlarda, bu özelliği ararken, bir istisna oluşabilir. Örneğin:

Gücü seçin (-100, 1/2) x2

Çift

Bu durumda, negatif bir sayıyı hesaplamak için bir girişimde bulunulur, bu da bir ORA-01428 "aralığı dışındaki argüman" hatası meydana gelecektir.

SQRT (n) işlevi

Bu fonksiyon, N sayısından bir kare kök döndürür. Örneğin:

SQRT (100) X'i seçin.

Çift

Fonksiyonlar exp (n) ve ln (n)

Exp işlevi, N derecesine sahiptir ve LN işlevi, doğal logaritmayı N'den (N, N ile sıfırdan daha büyük olmalıdır) hesaplar. Misal:

EXP (2) X1, LN (1) X2, LN (EXP (2)) X3'ü seçin.

Yatırım yapılan fonksiyonlar biraz daha erken dokunduk, şimdi onları biraz daha ayrıntılı düşünün. Ayrıca NULL değeri ile çalışma işlevini ve şube işleminin istekte bulunmasına yardımcı olan fonksiyonları da düşüneceğiz.

İç içe geçmiş fonksiyonlar

İç içe fonksiyonlar Bir işlevin iade değerini başka bir işlev için giriş parametresi olarak kullanıyorum. İşlevler her zaman sadece bir değer döndürür. Bu nedenle, işlevi bir arama parametresi olarak kullandığınızda, işlevin işlevini başka bir fonksiyona çağrı parametresi olarak görebilirsiniz. Hat fonksiyonları herhangi bir yuvalama seviyesine eklenebilir. Bir işlevi arayın gibi görünüyor

Fonksiyon1 (parametre1, parametre2, ...) \u003d Sonuç

İşlev parametresinin değiştirilmesi Başka bir işlevi aramak için türlerin görünümüne yol açabilir

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

İlk başta, iç içe geçmiş fonksiyonlar, sonuçları diğer fonksiyonlar için giriş değerleri olarak kullanılmadan önce hesaplanır. İşlevler en derin yuvalama seviyesinden en üst solaktan hesaplanır. Önceki ifade aşağıdaki gibi yapılır.

  1. Şekil F3 (param1) hesaplanır ve geri dönüş değeri, Fonksiyon 2 için üçüncü bir parametre olarak kullanılır, Hadi BT param2.3 olarak adlandıralım.
  2. F2 işlevi daha sonra hesaplanır (param1, param2.2, param2.3) ve geri dönüş değeri, ikinci parametre F1 işlevi - param1.2 olarak kullanılır.
  3. Son olarak, F1 (param1, param2, param1.3) işlevi hesaplanır ve sonuç arama programına döndürülür.

Böylece, F3 işlevi üçüncü yuva seviyesindedir.

Talebi düşünün

select_day (last_day (sysdate) -7, 'tue') çiftten;

  1. Bu sorguda, üç fonksiyon, alt seviyeden üstüne - Sysdate, last_day, next_day. Talep aşağıdaki gibi yapılır.
  2. En iç içe SysDate işlevi gerçekleştirilir. Mevcut sistem zamanını döndürür. Diyelim ki şu andaki tarih 28 Ekim 2009
  3. Sonuç, last_day ikinci seviye fonksiyonunun sonucudur. Last_date ('28 -oxt-2009 '), Ekim 2009'un son gününü, yani 31 Ekim 2009 değerinin değeridir.
  4. Sonra çıkarma, yedi günün bu tarihten itibaren ortaya çıkıyor - 24 Ekim'de ortaya çıkıyor.
  5. Ve nihayetinde, Next_day ('24 -Oxt-2009 ',' Tue ') işlevi hesaplanır ve istek, Ekim ayının son salı günü - Örnek 27-Eki 2009'da.

Çok sayıda fonksiyonun zorlukları kullanılarak karmaşık ifadeleri anlamak ve oluşturmak oldukça zordur, ancak zaman ve uygulama ile birlikte gelir. Parçalardaki bu ifadeleri kırabilir ve ayrı olarak test edebilirsiniz. Tablo Dual, Z.Aprosov'u ve fonksiyonun fonksiyonunun sonuçlarını test etmek için çok kullanışlıdır. Küçük bileşenleri test edebilir ve hata ayıklayabilirsiniz, bu daha sonra istenen bir ekspresyonda birleştirebilirsiniz.

Şube fonksiyonları

Şube fonksiyonları, bir şey gibi de bilinir - aksi takdirde, herhangi bir şartlara bağlı olarak uygulama yolunu belirlemek için kullanılır. Dallanma fonksiyonları, durumu hesaplamanın bir sonucuna dayanarak farklı sonuçlar verir. Bu tür fonksiyonlar grubu, NULL: NVL, NVL2, NULLIF ve COALESCE'nin değeri ile çalışmanın işlevlerini tahsis eder. Ayrıca, kod çözme fonksiyonu ve dava ifadesi ile temsil edilen ortak özellikler. Kod çözme işlevi bir Oracle işlevidir, durum ifadesi ANSI SQL standardında bulunur.

Nvl özelliği

NVL işlevi, kolonun değerini kontrol eder veya herhangi bir veri türünü NULL olarak ifade eder. Null ise - alternatif olmayan bir varsayılan değeri döndürür, aksi takdirde başlangıç \u200b\u200bdeğeri iade edilir.

NVL fonksiyonunun, orijinalin kontrol edilmesi için orijinal değeri olan ve orijinal değer boşsa, orijinalin orijinal değeri olduğu iki parametreye ve NVL sözdizimini (orijinal, IFNull) sahiptir. IFNull ve orijinal parametrelerin veri türü uyumlu olmalıdır. Yani, veri türü de aynı olmalıdır veya değerlerin bir türden diğerine örtük bir şekilde dönüşüm olasılığı olmalıdır. NVL işlevi, aynı veri türünün değerini orijinal parametrenin veri türü olarak döndürür. Üç istek düşünün

Sorgu 1: Dual'dan NVL (1234) seçin;

Sorgu 2: Dual'dan NVL (NULL, 1234) seçin;

Sorgu 3: NVL'yi seçin (SUBSTR ('ABC', 4), 'SU ALTRING ESISI') İkili;

NVL fonksiyonları iki parametre gerektirdiğinden, Query 1, ORA-00909 hatasını döndürür: Geçersiz argüman sayısı. İstek 2, NULL değeri kontrol edildiğinde ve null olduğundan 1234 döndürür. Soru üçü, dördüncü karakteri bir dizeden üç karakter uzunluğunda uzun süre seçmeye çalışan iç içe geçmiş substr işlevi kullanılır, NULL değerini döndürür ve NVL işlevi 'Sgustring Fisers' dizesini döndürür.

NVL işlevi, sayılarla çalışırken çok kullanışlıdır. NULL değerlerini 0'a dönüştürmek için kullanılır. aritmetik işlemler Nulls sayıların üzerinden geri dönmedi

Nvl özelliği2

NVL2 işlevi, NVL'den daha işlevsel olarak daha işlevsel olarak sağlar, aynı zamanda boş değeri işlemeyi de sunar. Sütunun değerini veya herhangi bir türün ifadesini NULL olarak kontrol eder. Değer null'a eşit değilse, ikinci parametre karışırsa, aksi takdirde, üçüncü parametre, NVL işlevinin aksine, bu durumda başlangıç \u200b\u200bdeğerini döndürür.

NVL2 fonksiyonunun üç gerekli parametreye ve NVL2 sözdizimini (orijinal, ifnot, ifnull) sahiptir, burada orijinalin geçerli bir değer olduğu durumlarda, orijinal null değilse, orijinal null olmazsa, IFNotNull değeri döndürülür. IFNotNull ve IFNull parametrelerinin veri türleri uyumlu olmalı ve uzun süremezler. NVL2 döndürülen işlevin veri türü, IFNotNull parametresinin veri türüne eşittir. Birkaç örnek düşünün

Sorgu 1: Dual'dan NVL2'yi (1234, 1, 'a string') seçin;

Sorgu 2: Dual'dan NVL2 (NULL, 1234, 5678) seçin;

Sorgu 3: NVL2'yi seçin (SUBSTR ('ABC', 2), 'BC', 'YOK SUBLING') DUAL;

Sorgu 1'deki IFNotNull parametresi sayıdır ve IFNull parametresi bir dizedir. Veri türleri uyumsuz olduğundan, "ORA-01722: Geçersiz sayı" hatası döndürülür. Sıra iki döndürür Ifnull parametresini döndürür, çünkü orijinal null ve sonuç 5678 olacaktır. Sorgu, 'BC'yi döndüren ve NVL2'yi (' BC ',' değil ',' Yok ',' SUSPLAYICI ',' YOK ',' YOK ') ifnotnull parametresi - 'BC değil'.

Nullif fonksiyonu

Nullif işlevi, kimlik için iki değeri kontrol eder. Aynı olurlarsa - NULL döndürülür, aksi takdirde ilk parametre döndürülür. NULLIF fonksiyonunun iki zorunlu parametreye ve sözdizimi nullif (iFunequal, karşılaştırması) vardır. İşlev, iki parametreyi karşılaştırır ve aynı ise - NULL döndürülür, aksi takdirde ifunequal parametresi. İstekleri düşünün

Sorgu 1: Dual'dan Nullif (1234, 1234) seçin;

İstek, parametreler aynı olduğundan NULL döndürür. Sorgu 2'deki satırlar tarihe dönüştürülmez, ancak satır olarak karşılaştırılır. Farklı uzunlukların satırları olduğundan - ifunequal 24-Jul-2009 parametresini döndürür.

Şekil 10-4, NULLIF işlevi NVL2 fonksiyonuna yatırılır. NulliF fonksiyonunda, sırayla, Substr ve üst fonksiyonlar, IFEREQUAL parametresindeki ifadenin bir parçası olarak kullanılır. E-posta sütunu, isminin ilk harfini döndüren, 4 karakterde adı olan çalışanlar için soyadı olan bu ifadeyle karşılaştırılır. Bu değerler eşit olduğunda, NULLIF NULL dönecektir, IFunequal parametresinin değeri değeri iade eder. Bu değerler NVL2 işlevi için bir parametre olarak kullanılır. NVL2 sırayla, karıştırılabilir elemanların çakışmaya ya da olmadığı açıklamasını döndürür.

Şekil 10-4 - Nullif işlevini kullanma

Coalesce işlevi

Coalesce işlevi, parametre listesinden NULL'ye eşit olmayan birinci değeri döndürür. Tüm parametreler null ise, NULL döndürülür. COALESCE işlevi, gerekli olan iki parametreye sahiptir ve sonuçların Expr 1H null değeri ise, NILL olmasaysa sonuç Expr2 olduğu, aksi halde sonuç Expr2 olduğunda, Kaç İsteğe Bağlı Parametre ve Coalesce Sözdizimi (Expr1, Expr2, ... , vb. Coalesce, NVL fonksiyonlarının anlamında eşittir

Coalesce (Expr1, Expr2) \u003d NVL (EXPR1, EXPR2)

COALESCE (EXPR1, EXPR2, EXPR3) \u003d NVL (EXPR1, NVL (EXPR2, EXPR3))

Veri Türü İade Değeri NULL NULL değeri değilse, ilk boş olmayan değerin veri türüne eşittir. 'ORA-00932: Tutarsız veri türleri' hatasını önlemek için, tüm boş olmayan parametrelerin tümü ilk boş olmayan parametre ile uyumlu olmalıdır. Üç örnek olarak düşünün

Sorgu 1: Dual'dan Coalesce (NULL, NULL, NULL, 'A STRINT') seçin;

Sorgu 2: Dual'dan Coalesce (, , null) seçin;

Sorgu 3: CoalEsce'yi seçin (SUBSTR ('ABC', 4), 'BC', 'YOK SU ALTSRING') DUAL;

İstek 1 Dördüncü parametreyi döndürür: Dize, bu ilk boş parametredir. Sorgu iki, tüm parametreler boş olduğundan null döndürür. İstek 3 İlk parametreyi hesaplar, boş değeri alır ve ikinci parametreyi döndürür, çünkü ilk boş olmayan parametredir.

NVL2 işlevi parametreleri, NVL işlevine zaten aşinasınız durumunda karıştırılabilir. NVL (Orijinal, IFNull), değer boş değilse, aksi takdirde IFNull. NVL2 (Orijinal, Ifnot, IFNull) Orijinal değer, IFNull dışında null değerine eşit değilse, ifnotnull döndürür. Karışıklık, NVL İfnull işlevinin ikinci parametresinin, NVL2'nin IFNotnull'dadır. Öyleyse parametreyi fonksiyonda konumlandırmayı umma.

Kod çözme özelliği

Kod çözme fonksiyonu, eğer-diğer mantık varsa, eşitlik başına ilk iki parametreyi kontrol etmek ve eşitlik durumunda eşitlik durumunda veya başka bir değer durumunda üçüncü değeri geri döndürür. Kod çözme fonksiyonunun üç gerekli parametreye ve sözdizimi kodunu (EXPR1, COMP1, IFTRUE1 ,,) sahiptir. Bu parametreler aşağıdaki psödo kodu örneğinde gösterildiği gibi kullanılır.

Expr1 \u003d COMP1 ise iFrue1 döndürürse1

Expr1 \u003d COMP2 ise iFrue2 döndürürse

Exprn \u003d compn ise iftruen iade ederse

Başka null return | iffalse;

İlk başta, EXPR1 COMP1 ile karşılaştırıldı. Eğer IFTRUE1'in değerine eşitlerse. Expr1, COMP1'e eşit değilse, daha sonra, COMP2 ve IFTRUE2'nin parametrelerinin belirtilip belirtilmediğine de bağlıdır. SETler ayarlanmışsa, Expr1 değeri COMP2 ile karşılaştırılır. Değerler eşitse, IFTRUE2 döndürülür. Değilse, Compn parametre çiftleri varsa, iftuen Expr1 ve Compn'u karşılaştırır ve eğer eşitlik durumunda iftruen döndürülürse. Herhangi bir parametre setinde bir tesadüf yoksa, eğer bu parametre ayarlanmışsa veya NULL ise iade edilir.

Kod çözme fonksiyonundaki tüm parametreler ifadeler olabilir. İade edilen değer türü, ilk kontrol elemanının türüne eşittir - parametrecOMP 1. Expr ifadesi 1, örtük olarak COM parametrenin veri türüne dönüştürülür.1. Diğer tüm mevcut comp seçenekler1 ... compn. Ayrıca örtük olarak comp tipine dönüştürüldü1. Kod çözme, NULL değerini başka bir boş değere eşit olarak görüyor, yani. Expr1 NULL ve COMP3'ün NULL'dir ve COMP2 null değildirse, IFTrue3 değeri iade edilir. Birkaç örnek düşünün

Sorgu 1: Çözünür (1234, 123, '123 bir maçtır'), çift;

Sorgu 2: SELECT KOLAY (1234, 123, '123, İkili'den bir eşleşme', 'maç');

Sorgu 3: SELECT kod çözünür ('Arama', 'COMP1', 'True1', 'COMP2', 'True2', 'Arama', 'True3', Substr ('2Search', 2, 6), 'True4', ' çiftten yanlış ');

İstek, 1234 ve 123 değerinin değerini karşılaştırır. Onlar eşit olmadıklarından, IFTrue1 göz ardı edilir ve null döndürülürse tanımlanmadığından. Sorgu, IFFALSE değerinin tanımlandığı istisna olan sorgu 1 ile aynıdır. 1234'ten beri 123'e eşit değilse, iffalse iade edilir - 'Maç yok'. Sorgu üç, arama değerini eşleştirirken parametre değerlerini kontrol eder. COMP1 ve COMP2'nin parametreleri, 'Ara' 'e eşit değildir, bu nedenle IFTRUE1 ve IFTRUE2'nin sonuçları atlanır. Tesadüf, COMP3 elemanının (6 parametresinin konumu) ve IFTrue3 değeri (parametre 7) 'true3' i döndürüldüğü için üçüncü karşılaştırma karşılaştırmasında bulunur. Tesadüf bulunduğundan daha fazla hesaplamalar yapılmamıştır. Yani, COMP4 değerinin (parametre 8) de Expr1 ile çakışmasına rağmen, bu ifadenin önceki karşılaştırmada bulunduğundan tespit edildiğinden bu ekspresyon asla hesaplanmaz.

Vaka ifadesi

Tüm üçüncü ve dördüncü nesil programlama dilleri vaka tasarımı uygular. Kod çözme fonksiyonu gibi, dava ifadesi, eğer-diğer mantıkın uygulanmasına izin verir. Durum ifadesini kullanmak için iki seçenek mevcuttur. Basit Durum İfadesi Kaynak öğesini bir kez karşılaştırmak için ayarlar ve ardından gerekli tüm doğrulama koşullarını listeler. Kompleks (aranmış) dava her koşul için her iki operatörü de hesaplar.

Durum ifadesi üç zorunlu parametreye sahiptir. İfadenin sözdizimi türüne bağlıdır. Basit bir ifade vakası için o gibi görünüyor

Case Search_expr.

Karşılaştırma_expr1 sonra IFTrue1

}