Çeşitli veri türleri için NVL dönüşümleri. SELECT komutundaki dal ifadeleri Oracle nvl açıklaması

İç içe geçmiş işlevlere biraz önce değinmiştik, şimdi biraz daha detaylı bakacağız. Ayrıca NULL değeriyle çalışmaya yönelik işlevleri ve bir sorguda dallanma işleminin uygulanmasına yardımcı olan işlevleri de ele alacağız.

İç içe işlevler

İç içe geçmiş işlevler, bir işlevin dönüş değerini başka bir işleve giriş parametresi olarak kullanır. Fonksiyonlar her zaman yalnızca bir değer döndürür. Bu nedenle, bir işlev çağrısının sonucunu, başka bir işlev çağrısının parametresi olarak kullandığınızda, bir değer değişmezi olarak değerlendirebilirsiniz. Dize işlevleri herhangi bir iç içe geçme düzeyine yerleştirilebilir. Bir işlev çağrısı şuna benzer

Fonksiyon1(parametre1, parametre2, …) = sonuç

Bir işlev parametresini başka bir işleve yapılan çağrıyla değiştirmek, aşağıdaki gibi ifadelerle sonuçlanabilir:

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

İç içe geçmiş işlevler, sonuçları diğer işlevler için giriş değerleri olarak kullanılmadan önce ilk olarak değerlendirilir. Fonksiyonlar en derindeki yuvalama seviyesinden en üsttekine kadar soldan sağa doğru değerlendirilir. Önceki ifade aşağıdaki gibi yürütülür

  1. Fonksiyon F3(param1) değerlendirilir ve dönüş değeri fonksiyon 2 için üçüncü parametre olarak kullanılır, buna param2.3 diyelim.
  2. Daha sonra F2(param1, param2.2, param2.3) fonksiyonu değerlendirilir ve dönüş değeri F1 - param1.2 fonksiyonunun ikinci parametresi olarak kullanılır.
  3. Son olarak F1(param1, param2, param1.3) fonksiyonu değerlendirilir ve sonuç çağıran programa döndürülür.

Böylece F3 işlevi üçüncü yuvalama düzeyindedir.

Talebi değerlendirelim

ikiliden next_day(last_day(sysdate)-7, 'tue') seçeneğini seçin;

  1. Bu sorguda alt seviyeden üst seviyeye doğru üç işlev vardır: SYSDATE, LAST_DAY, NEXT_DAY. Talep şu şekilde gerçekleştirilir
  2. İç içe geçmiş SYSDATE işlevi yürütülür. Geçerli sistem saatini döndürür. Diyelim ki şu anki tarih 28 Ekim 2009
  3. Daha sonra LAST_DAY ikinci seviye fonksiyonunun sonucu hesaplanır. LAST_DATE('28-OCT-2009') Ekim 2009'un son günü olan 31 Ekim 2009'u döndürür.
  4. Daha sonra bu tarihten yedi gün çıkarılır - 24 Ekim ortaya çıkar.
  5. Son olarak NEXT_DAY('24-OCT-2009', 'tue') işlevi değerlendirilir ve sorgu Ekim ayının son Salı gününü döndürür; bu bizim örneğimizde 27-OCT-2009'dur.

Pek çok iç içe işlev çağrısını kullanarak karmaşık ifadeleri anlamak ve oluşturmak oldukça zordur, ancak bu zaman ve pratikle birlikte gelir. Bu tür ifadeleri parçalara ayırıp ayrı ayrı test edebilirsiniz. DUAL tablosu, sorguları ve işlev çağrısı sonuçlarını test etmek için çok kullanışlıdır. Daha sonra istenen büyük bir ifadede birleştirilen küçük bileşenleri test edebilir ve hata ayıklayabilirsiniz.

Dallanma fonksiyonları

IF-THEN-ELSE olarak da bilinen dal fonksiyonları, bazı koşullara bağlı olarak yürütme yolunu belirlemek için kullanılır. Dallanma fonksiyonları, durum değerlendirmesinin sonucuna bağlı olarak farklı sonuçlar döndürür. Bu tür işlevler grubu, NULL değeriyle çalışmaya yönelik işlevleri içerir: NVL, NVL2, NULLIF ve COALESCE. Ayrıca DECODE işlevi ve CASE ifadesi tarafından temsil edilen ortak işlevler. DECODE işlevi bir Oracle işlevidir, CASE ifadesi ise ANSI SQL standardında mevcuttur.

NVL işlevi

NVL işlevi, herhangi bir veri türündeki bir sütunun veya ifadenin değerini NULL'a karşı test eder. Değer NULL ise, NULL olmayan alternatif bir varsayılan değer döndürür, aksi halde orijinal değeri döndürür.

NVL işlevinin iki gerekli parametresi vardır ve sözdizimi NVL(orijinal, ifnull) şeklindedir; burada orijinal, kontrol edilecek orijinal değerdir ve ifnull, orijinal değer NULL ise işlevin döndürdüğü sonuçtur. ifnull ve orijinal parametrelerin veri türü uyumlu olmalıdır. Yani, ya veri türü aynı olmalı ya da değerleri bir türden diğerine örtülü olarak dönüştürmenin mümkün olması gerekir. NVL işlevi, orijinal parametrenin veri türüyle aynı veri türünde bir değer döndürür. Üç sorguyu ele alalım

Sorgu 1: ikiliden nvl(1234)'ü seçin;

Sorgu 2: ikiliden nvl(null, 1234) öğesini seçin;

Sorgu 3: ikiliden nvl(substr('abc', 4), 'Alt dize yok') öğesini seçin;

NVL işlevi iki parametre gerektirdiğinden, istek 1 ORA-00909 hatasını döndürecektir: geçersiz sayıda bağımsız değişken. NULL değeri kontrol edildiğinden ve NULL olduğundan sorgu 2 1234 değerini döndürecektir. Üçüncü sorgu, üç karakter uzunluğundaki bir dizeden dördüncü karakteri çıkarmaya çalışan, NULL döndüren ve 'Sbustring yok' dizesini döndüren NVL işlevini kullanan iç içe geçmiş bir SUBSTR işlevini kullanır.

Sayılarla çalışırken NVL işlevi çok kullanışlıdır. Sayılar üzerinde yapılan aritmetik işlemlerin NULL döndürmemesi için NULL değerleri 0'a dönüştürmek için kullanılır.

NVL işlevi2

NVL2 işlevi, NVL'den daha fazla işlevsellik sağlar ancak aynı zamanda NULL değerleri işlemeye de yarar. Herhangi bir türdeki bir sütunun veya ifadenin değerini NULL'a karşı test eder. Değer NULL değilse, ikinci parametre döndürülür, aksi takdirde, bu durumda orijinal değeri döndüren NVL işlevinden farklı olarak üçüncü parametre döndürülür.

NVL2 işlevinin üç gerekli parametresi vardır ve sözdizimi NVL2(orijinal, ifnotnull, ifnull) şeklindedir; burada orijinal, test edilen değerdir, ifnotnull, orijinal NULL değilse döndürülen değerdir ve ifnull, orijinal NULL ise döndürülen değerdir. ifnotnull ve ifnull parametrelerinin veri türleri uyumlu olmalıdır ve LONG türünde olamazlar. NVL2 işlevi tarafından döndürülen veri türü, ifnotnull parametresinin veri türüne eşittir. Birkaç örneğe bakalım

Sorgu 1: ikiliden nvl2(1234, 1, 'a string')'i seçin;

Sorgu 2: ikiliden nvl2(null, 1234, 5678)'i seçin;

Sorgu 3: ikiliden nvl2(substr('abc', 2), 'Not bc', 'No substring') öğesini seçin;

İstek 1'deki ifnotnull parametresi bir 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. İkinci sorgu, orijinal NULL olduğundan ve sonuç 5678 olacağından ifnull parametresini döndürür. Üçüncü sorgu, 'bc' değerini döndüren SUBSTR işlevini kullanır ve NVL2('bc','Not bc','No substring') işlevini çağırır - bu işlev şunu döndürür: ifnotnull parametresi – 'BC değil'.

NULLIF işlevi

NULLIF işlevi iki değerin aynı olup olmadığını kontrol eder. Aynı iseler NULL döndürülür, aksi takdirde ilk parametre döndürülür. NULLIF işlevinin iki gerekli parametresi vardır ve sözdizimi NULLIF(ifunequal, karşılaştırma_öğesi) şeklindedir. Fonksiyon iki parametreyi karşılaştırır ve eğer aynıysa NULL değeri döndürülür, aksi halde parametre ifunequal olur. Talepleri değerlendirelim

Sorgu 1: ikiliden nullif(1234, 1234)'ü seçin;

Parametreler aynı olduğundan birinci sorgu NULL değerini döndürür. Sorgu 2'deki dizeler tarihe dönüştürülmez, ancak dizeler olarak karşılaştırılır. Dizeler farklı uzunluklarda olduğundan ifunequal parametresi 24-Temmuz-2009'da döndürülür.

Şekil 10-4'te NULLIF işlevi, NVL2 işlevi içine yerleştirilmiştir. NULLIF işlevi ise ifunequal parametresindeki bir ifadenin parçası olarak SUBSTR ve UPPER işlevlerini kullanır. EMAIL sütunu, adı 4 karakter uzunluğunda olan çalışanlar için adının ilk harfini soyadıyla birleştirilmiş olarak döndüren bu ifadeyle karşılaştırılır. Bu değerler eşit olduğunda NULLIF NULL değerini döndürür, aksi halde ifunequal parametresinin değerini döndürür. Bu değerler NVL2 işlevi için parametre olarak kullanılır. NVL2 ise karşılaştırılan öğelerin eşleşip eşleşmediğine ilişkin bir açıklama döndürür.

Şekil 10-4 – NULLIF işlevinin kullanılması

BİRLEŞME işlevi

COALESCE işlevi, parametre listesinden NULL olmayan ilk değeri döndürür. Tüm parametreler NULL ise NULL döndürülür. COALESCE işlevi iki gerekli parametreye ve herhangi bir sayıda isteğe bağlı parametreye sahiptir ve sözdizimi COALESCE(ifade1, ifade2, ..., ifade) şeklindedir; burada ifade 1'in değeri NULL değilse sonuç ifade1 olacaktır, aksi takdirde sonuç şöyle olacaktır: ifade2 NULL değilse vb. COALESCE anlam olarak iç içe geçmiş NVL işlevlerine eşittir

BİRLEŞME(ifade1, ifade2) = NVL(ifade1, ifade2)

BİRLEŞME(ifade1, ifade2, ifade3) = NVL(ifade1,NVL(ifade2, ifade3))

NULL olmayan bir değer bulunursa döndürülen değerin veri türü, NULL olmayan ilk değerin veri türüne eşittir. 'ORA-00932: tutarsız veri türleri' hatasını önlemek için NULL olmayan tüm parametrelerin, NULL olmayan ilk parametreyle uyumlu olması gerekir. Üç örneğe bakalım

Sorgu 1: ikiliden birleştirmeyi (null, null, null, 'a string') seçin;

Sorgu 2: ikiliden birleştirmeyi (null, null, null) seçin;

Sorgu 3: ikiliden birleşimi (substr('abc', 4), 'Not bc', 'No substring') seçin;

Sorgu 1 dördüncü parametreyi döndürür: NULL olmayan ilk parametre olduğundan bir dize. Tüm parametreler NULL olduğundan ikinci sorgu NULL değerini döndürür. Sorgu 3, ilk parametreyi değerlendirir, NULL değerini alır ve NULL olmayan ilk parametre olduğundan ikinci parametreyi döndürür.

NVL işlevine zaten aşina iseniz, NVL2 işlevi parametreleri kafa karıştırıcı olabilir. NVL(orijinal, ifnull), değer NULL değilse orijinali, aksi takdirde ifnull'u döndürür. NVL2(orijinal, ifnotnull, ifnull), orijinal NULL değilse, aksi takdirde ifnull ise ifnotnull değerini döndürür. Karışıklık, NVL fonksiyonunun ikinci parametresinin ifnull olması, NVL2 fonksiyonunun ise ifnotnull olması gerçeğinden kaynaklanmaktadır. Bu nedenle parametrenin fonksiyondaki konumuna güvenmeyin.

KOD ÇÖZME işlevi

DECODE işlevi, ilk iki parametreyi eşitlik açısından test ederek ve eşitse üçüncü bir değer, eşit değilse farklı bir değer döndürerek if-then-else mantığını uygular. DECODE işlevinin üç gerekli parametresi vardır ve sözdizimi DECODE(ifade1, comp1, iftrue1, , ) şeklindedir. Bu parametreler aşağıdaki sözde kod örneğinde gösterildiği gibi kullanılır

IF expr1=comp1 ise iftrue1 değerini döndürün

Aksi takdirde ifade1=comp2 ise iftrue2 değerini döndürün

Aksi takdirde, eğer exprN=compN ise iftrueN değerini döndürün

Aksi halde return NULL|iffalse;

İlk olarak ifade1, comp1 ile karşılaştırılır. Eşit olmaları durumunda iftrue1 döndürülür. Eğer ifade1, comp1'e eşit değilse, bundan sonra ne olacağı, comp2 ve iftrue2 parametrelerinin belirtilip belirtilmediğine bağlıdır. Eğer verilirse, ifade1'in değeri comp2 ile karşılaştırılır. Değerler eşitse iftrue2 döndürülür. Değilse, compN, iftrueN, expr1 ve compN parametre çiftleri varsa karşılaştırılır ve eşitse iftrueN döndürülür. Herhangi bir parametre kümesinde eşleşme bulunamazsa, bu parametre belirtildiyse ya iffalse olur ya da NULL döndürülür.

DECODE işlevindeki tüm parametreler ifade olabilir. Dönüş değerinin türü, ilk doğrulama öğesinin türüne (parametre) eşittir comp 1. İfade ifade 1 örtülü olarak comp parametresinin veri türüne dönüştürülür1. Mevcut tüm diğer kompozisyon parametreleri 1...bileşen ayrıca örtülü olarak comp türüne dönüştürülür 1. DECODE, bir NULL değerini başka bir NULL değerine eşit olarak ele alır; ifade1 NULL ise ve comp3 NULL ise ve comp2 NULL değilse, iftrue3 döndürülür. Birkaç örneğe bakalım

Sorgu 1: ikiliden kod çözmeyi (1234, 123, '123 bir eşleşmedir') seçin;

Sorgu 2: ikiliden kod çözmeyi (1234, 123, '123 eşleşiyor', 'Eşleşme yok') seçin;

Sorgu 3: decode('arama', 'comp1', 'true1', 'comp2', 'true2', 'search', 'true3', substr('2search', 2, 6), 'true4', ' seçeneğini seçin false') ikiliden;

Birinci sorgu 1234 ve 123 değerini karşılaştırır. Eşit olmadıkları için iftrue1 dikkate alınmaz ve iffalse değeri tanımlanmadığından NULL döndürülür. İkinci istek, iffalse değerinin tanımlanmış olması dışında istek 1 ile aynıdır. 1234, 123'e eşit olmadığından iffalse değerini döndürür - 'Eşleşme yok'. Sorgu üç, parametre değerlerini arama değeriyle eşleşecek şekilde kontrol eder. comp1 ve comp2 parametreleri 'search'e eşit olmadığından iftrue1 ve iftrue2'nin sonuçları atlanır. Comp3 öğesinin üçüncü karşılaştırma işleminde (parametre konumu 6) bir eşleşme bulunur ve 'true3'e eşit olan iftrue3 değeri (parametre 7) döndürülür. Bir eşleşme bulunduğundan başka hesaplama yapılmaz. Yani, comp4'ün değeri (parametre 8) de expr1 ile eşleşse de, önceki karşılaştırmada eşleşme bulunduğundan bu ifade hiçbir zaman hesaplanmaz.

CASE ifadesi

Üçüncü ve dördüncü nesil programlama dillerinin tümü vaka yapısını uygular. DECODE işlevi gibi CASE ifadesi de if-then-else mantığını uygulamanıza olanak tanır. CASE ifadesini kullanmak için iki seçenek vardır. Basit bir CASE ifadesi, kaynak öğeyi bir kez karşılaştırılacak şekilde ayarlar ve ardından gerekli tüm test koşullarını listeler. Karmaşık (aranan) CASE, her koşul için her iki ifadeyi de değerlendirir.

CASE ifadesinin üç gerekli parametresi vardır. İfade sözdizimi türe bağlıdır. Basit bir CASE ifadesi için şöyle görünür

CASE arama_ifadesi

WHEN karşılaştırma_ifade1 SONRA iftrue1

)

TRUNC işlevi, n sayısını m ondalık basamağa kısaltılmış olarak döndürür. m parametresi belirtilmeyebilir; bu durumda n, bir tam sayıya kısaltılır.

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

TRUNC(100.25678, 2) X4

DUAL'DEN

İşlev İŞARETİ(n)

SIGN işlevi bir sayının işaretini belirler. Eğer n pozitifse fonksiyon 1 değerini döndürür. Eğer n negatifse -1 değerini döndürür. Sıfıra eşitse 0 döndürülür. Örneğin:

İŞARETİ(100.22) X1, İŞARETİ(-100.22) X2, İŞARETİ(0) X3 SEÇİN

DUAL'DEN

Bu fonksiyonun ilginç bir özelliği, 0'a bölme hatasına neden olmadan m'yi sıfıra eşit olarak iletme yeteneğidir.

Fonksiyon GÜÇ(n, m)

POWER işlevi n sayısını m üssüne yükseltir. Derece, bu işlevin yeteneklerini önemli ölçüde genişleten kesirli ve negatif olabilir.

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

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

DUAL'DEN

X1 X2 X3 X4
100 10 10 0,1

Bazı durumlarda bu işlev çağrılırken bir istisna oluşabilir. Örneğin:

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

DUAL'DEN

Bu durumda, negatif bir sayının karekökü hesaplanırken ORA-01428 "Bağımsız değişken aralık dışı" hatasıyla sonuçlanacaktır.

İşlev SQRT(n)

Bu işlev n'nin karekökünü döndürür. Örneğin:

KARE(100) X'İ SEÇİN

DUAL'DEN

EXP(n) ve LN(n) işlevleri

EXP işlevi e'yi n üssüne yükseltir ve LN işlevi n'nin doğal logaritmasını hesaplar (n sıfırdan büyük olmalıdır). Örnek:

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

NVL işlevi

NVL işlevi genellikle en sık kullanılır. İşlev iki parametre alır: NVL(ifade1, ifade2). İlk parametre expr1 NULL değilse, işlev değerini döndürür. İlk parametre NULL ise, işlev bunun yerine ikinci parametre expr2'nin değerini döndürür.

Pratik bir örneğe bakalım. EMP tablosundaki COMM alanı NULL değerler içerebilir. Aşağıdaki gibi bir sorgu çalıştırırken:

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

SCOTT.EMP'DEN

NULL değeri sıfırla değiştirilecektir. Bir işlev kullanılarak bir değer üretildiğinde buna bir takma ad atandığını unutmayın. Sorgu sonuçları şöyle görünecektir:

EMPNO ADI İLETİŞİM NVL_COMM
7369 SMITH 0
7499 ALEN 300 300
7521 KOĞUŞ 500 500
7566 JONES 0
7654 MARTİN 1400 1400
7698 BLAKE 0
7782 CLARK 0
7839 KRAL 0
7844 DÖNER 0 0
7900 JAMES 0
7902 FORD 0
7934 DEĞİRMENCİ 0

İşlev CEIL(n)

CEIL işlevi, parametre olarak iletilen n sayısından büyük veya ona eşit en küçük tamsayıyı döndürür. Örneğin:

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

DUAL'DEN

Fonksiyon TRUNC(n [,m])

TRUNC işlevi, n sayısını m ondalık basamağa kısaltılmış olarak döndürür. m parametresi belirtilmeyebilir; bu durumda n, bir tam sayıya kısaltılır.

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

TRUNC(100.25678, 2) X4

DUAL'DEN

İşlev İŞARETİ(n)

SIGN işlevi bir sayının işaretini belirler. Eğer n pozitifse fonksiyon 1 değerini döndürür. Eğer n negatifse -1 değerini döndürür. Sıfıra eşitse 0 döndürülür. Örneğin:

İŞARETİ(100.22) X1, İŞARETİ(-100.22) X2, İŞARETİ(0) X3 SEÇİN

DUAL'DEN

Bu fonksiyonun ilginç bir özelliği, 0'a bölme hatasına neden olmadan m'yi sıfıra eşit olarak iletme yeteneğidir.

Fonksiyon GÜÇ(n, m)

POWER işlevi n sayısını m üssüne yükseltir. Derece, bu işlevin yeteneklerini önemli ölçüde genişleten kesirli ve negatif olabilir.

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

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

DUAL'DEN

X1 X2 X3 X4
100 10 10 0,1

Bazı durumlarda bu işlev çağrılırken bir istisna oluşabilir. Örneğin:

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

DUAL'DEN

Bu durumda, negatif bir sayının karekökü hesaplanırken ORA-01428 "Bağımsız değişken aralık dışı" hatasıyla sonuçlanacaktır.

İşlev SQRT(n)

Bu fonksiyon n sayısının karekökünü döndürür. Örneğin:

KARE(100) X'İ SEÇİN

DUAL'DEN

EXP(n) ve LN(n) işlevleri

EXP işlevi e'yi n üssüne yükseltir ve LN işlevi n'nin doğal logaritmasını hesaplar (n sıfırdan büyük olmalıdır). Örnek:

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

Sayılarla TO_CHAR işlevi

Verileri diğer veri türlerine dönüştürme işlevleri. TO_CHAR(sayı) sayıyı metne dönüştürür. TO_NUMBER(string) metni sayıya dönüştürür.

SELECT TO_CHAR (123) FROM DUAL 123 dizesini döndürür, SELECT TO_NUMBER (`12345") FROM DUAL 12345 sayısını döndürür.

Laboratuvar işi. Çıkış numarası formatını değiştirme

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

Egzersiz yapmak:

HR.employees tablosundan çalışanların adı, soyadı ve maaşına ilişkin bilgileri Şekil 2'deki formatta görüntüleyecek bir sorgu yazınız. 3.4-1:

Pirinç. 3.4 -1

Bu durumda veriler, en yüksek maaşlı çalışanların satırları ilk önce görüntülenecek şekilde sıralanmalıdır.

Not:

Şekil 2'deki bazı maaş değerleri. 3.4-1 değiştirildi, dolayısıyla değerlerinizle aynı olmayabilir.

Çözüm:

Adını "Ad", soyadını "Soyadı", TO_CHAR (SALARY, "L999999999.99") olarak "Maaş" olarak SEÇİN.

TO_NUMBER ve TO_DATE işlevleri

Bir dizeyi TO_DATE tarihine (dize, biçim) dönüştürme işlevi. Olası format değerleri yukarıda zaten tartışılmıştı, bu yüzden bu işlevin kullanımına ilişkin birkaç örnek vereceğim. Örnekler:

SEÇME TO_DATE("01/01/2010", `GG.AA.YYYY") İTİBAREN DUAL, '01/01/2010' tarihini döndürecektir;

SEÇME TO_DATE("01.JAN.2010", `GG.MON.YYYY") İTİBAREN DUAL, '01/01/2009' tarihini döndürecektir;

SEÇME TO_DATE("15-01-10", `GG-AA-YY") İTİBAREN DUAL, '01/15/2010' tarihini döndürecektir.

Bir dizeyi TO_NUMBER sayısal değerine (dize, biçim) dönüştürme işlevi. En yaygın format değerleri tabloda listelenmiştir, bu yüzden örnekleri kullanarak bu fonksiyonun kullanımına bakalım. Örnekler:

SEÇME TO_NUMBER(`100") İTİBAREN DUAL, 100 sayısını döndürecektir SELECT TO_NUMBER (`0010.01", "9999D99") İTİBAREN DUAL 10.01 sayısını döndürecektir;

SEÇME TO_NUMBER("500.000", "999G999") İTİBAREN DUAL 500000 sayısını döndürecektir.

Tarih biçiminde RR öğesi

RR datetime formatı öğesi, YY datetime formatı öğesine benzer ancak diğer yüzyıllardaki tarih değerlerinin saklanması için ek esneklik sağlar. RR datetime formatı öğesi, yılın yalnızca son iki basamağını belirterek 20. yüzyıl tarihlerinin 21. yüzyılda saklanmasına olanak tanır.

Geçerli yılın son iki basamağı 00 ile 49 arasındaysa, döndürülen yılın ilk iki basamağı, geçerli yılla aynı olur.

İçinde bulunulan yılın son iki basamağı 50 ile 99 arasındaysa, döndürülen yılın ilk 2 basamağı, içinde bulunulan yılın ilk 2 basamağından 1 büyüktür.

Cari yılın son iki rakamı 00 ile 49 arasında ise, döndürülen yılın ilk 2 rakamı, cari yılın ilk 2 rakamından 1 eksiktir.

Cari yılın son iki rakamı 50 ile 99 arasındaysa, döndürülen yılın ilk iki rakamı cari yılla aynı olacaktır.

NVL işlevi

NVL işlevi genellikle en sık kullanılır. İşlev iki parametre alır: NVL (ifade1, ifade2). İlk parametre expr1 NULL değilse, işlev değerini döndürür. İlk parametre NULL ise, işlev bunun yerine ikinci parametre expr2'nin değerini döndürür.

Örnek: Tedarikçilerden NVL'yi (tedarikçi_şehir, mevcut değil") seçin:

Yukarıdaki SQL ifadesi, tedarikçi_şehir alanı boş bir değer içeriyorsa n/" değerini döndürecektir. Aksi takdirde tedarikçi_şehir değerini döndürecektir.

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

tedarikçilerden tedarikçi_kimliği, NVL (tedarikçi_desc, tedarikçi_adı) seçeneğini seçin.

Bu SQL ifadesi geri dönecektir sağlayıcı adı eğer alan tedarikçi_desc boş bir değer içerir. Aksi halde geri döner tedarikçi_desc.

Son örnek: Oracle/PLSQL'de NVL fonksiyonunu kullanmak: satışlardan NVL(komisyon, 0) seçin;

Bu SQL ifadesi şu durumda 0 değerini döndürdü: komisyon Alan boş bir değer içeriyor. Aksi takdirde iade edilecekti komisyonlar alan.

Çeşitli veri türleri için NVL dönüşümleri

Boş bir değeri gerçek değere dönüştürmek için NVL işlevini kullanın: NVL ( ifade1, ifade2), Nerede:

ifade1- Tanımlanamayan orijinal veya hesaplanmış değer.

ifade2- Tanımsız değerin yerine konulan değer.

Not: NVL işlevi herhangi bir veri türünü dönüştürmek için kullanılabilir, ancak sonuç her zaman aşağıdakiyle aynı türde olacaktır: ifade1.

için NVL dönüşümü çeşitli türler:

SAYI - NVL (sayısal sütun, 9).

CHAR veya VARCHAR2 - NVL (karakterler|sütun,"Müsait değil").

Laboratuvar işi. NVL işlevini kullanma

Oracle SQL'de boş değerlerle çalışmak için NVL işlevi.

Egzersiz yapmak:

hr.employees.tablosundan çalışanın adı ve soyadı bilgilerinin yanı sıra çalışana ait komisyon oranını (COMMISSION_PCT sütunu) görüntüleyen bir sorgu yazın. Bu durumda komisyonu tanımlanmayan çalışanlar için 0 değeri görüntülenmelidir, talebin sonucu Şekil 2'deki gibi olmalıdır. 3.5-1.

Pirinç. 3.5 -1 (değerler 51. satırdan başlayarak gösterilmektedir)

Çözüm:

İlgili istek kodu şu şekilde olabilir:

hr.çalışanlardan "Ad" OLARAK ad, "Soyadı" olarak soyadı, "Komisyon Oranı" olarak NVL (COMMISSION_PCT, 0) SEÇİN.




Tepe