Nvl sql açıklaması. Farklı veri türleri için NVL dönüşümleri

İç içe işlevlere biraz önce değindik, şimdi bunları daha ayrıntılı olarak ele alacağız. Ayrıca NULL değerlerle çalışmaya yönelik işlevlere ve bir sorguda dallanma işleminin uygulanmasına yardımcı olan işlevlere de bakacağız.

İç içe işlevler

İç içe işlevler, bir işlevin dönüş değerini başka bir işleve giriş parametresi olarak kullanır. Fonksiyonlar her zaman sadece bir değer döndürür. Bu nedenle, başka bir işleve yapılan bir çağrının parametresi olarak kullandığınızda, bir işlev çağrısının sonucunu değişmez değer olarak değerlendirebilirsiniz. Satır içi işlevler herhangi bir yuvalama düzeyine yuvalanabilir. Bir işlev çağrısı şöyle görünür

Fonksiyon1 (parametre1, parametre2,…) = sonuç

Bir işlev parametresinin başka bir işleve yapılan çağrıyla değiştirilmesi, 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şlevlere girdi olarak kullanılmadan önce değerlendirilir. Fonksiyonlar, en derin yuvalama seviyesinden en yüksek yuvalama seviyesine kadar soldan sağa doğru değerlendirilir. Önceki ifade aşağıdaki gibi yürütülür

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

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

Talebi değerlendirin

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

  1. Bu istekte aşağıdan yukarıya doğru üç işlev vardır - SYSDATE, LAST_DAY, NEXT_DAY. İstek aşağıdaki gibi yürütülür
  2. En iç içe SYSDATE işlevi yürütülür. Geçerli sistem saatini döndürür. Geçerli tarihin 28 Ekim 2009 olduğunu varsayalım.
  3. Daha sonra, LAST_DAY ikinci seviye fonksiyonunun sonucu hesaplanır. LAST_DATE ('28 -OCT-2009 '), 31 Ekim 2009 olan Ekim 2009'un son gününü 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 ',' sal ') işlevi değerlendirilir ve sorgu, örneğimizde 27-OCT-2009 olan Ekim ayının son Salı gününü döndürür.

Birçok iç içe işlev çağrısını kullanarak karmaşık ifadeleri anlamak ve oluşturmak yeterince zordur, ancak bu zaman ve pratikle gelir. Bu tür ifadeleri parçalara ayırabilir ve ayrı ayrı test edebilirsiniz. DUAL tablosu, sorguları ve işlev çağrılarını test etmek için çok kullanışlıdır. Küçük bileşenleri test edebilir ve hatalarını ayıklayabilirsiniz; bunlar daha sonra tek bir büyük, istenen ifadede birleştirilebilir.

Dallanma fonksiyonları

IF-THEN-ELSE olarak da bilinen dallanma işlevleri, bazı koşullara göre yürütme yolunu belirlemek için kullanılır. Dallanma işlevleri, bir koşulu değerlendirmenin sonucuna göre farklı sonuçlar döndürür. Bu tür işlevler grubunda, NULL değerlerle çalışma işlevleri ayırt edilir: 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, NULL için bir sütunun veya herhangi bir veri türünün ifadesinin değerini test eder. Değer NULL ise, NULL olmayan alternatif bir varsayılan değer döndürür; aksi takdirde orijinal değer döndürülür.

NVL işlevinin iki gerekli parametresi vardır ve sözdizimi NVL'dir (orijinal, ifnull) burada orijinal kontrol edilecek orijinal değerdir ve ifnull, orijinal NULL ise işlev tarafından döndürülen sonuçtur. ifnull ve orijinal parametrelerin veri türü uyumlu olmalıdır. Yani ya veri tipi aynı olmalı ya da değerleri bir türden diğerine örtük olarak dönüştürmek mümkün olmalıdır. NVL işlevi, orijinal parametrenin veri türüyle aynı veri türünde bir değer döndürür. Üç isteği göz önünde bulundurun

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

Sorgu 2: ikiliden nvl (boş, 1234) seçin;

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

NVL işlevi iki parametre gerektirdiğinden, sorgu 1 bir ORA-00909: geçersiz bağımsız değişken sayısı hatası döndürür. NULL kontrol edildiğinden ve NULL olduğundan, sorgu 2 1234 döndürür. Üçüncü sorgu, üç karakterli bir dizeden dördüncü karakteri çıkarmaya çalışan iç içe geçmiş bir SUBSTR işlevi kullanır, NULL değerini döndürür ve NVL işlevi "sbustring yok" dizesini döndürür.

NVL işlevi sayılarla çalışırken çok kullanışlıdır. NULL değerleri 0'a dönüştürmek için kullanılır, böylece Aritmetik işlemler fazla sayılar NULL döndürmedi

NVL işlevi2

NVL2, NVL'den daha fazla işlevsellik sağlar, ancak NULL değerleri de işler. NULL için herhangi bir türdeki bir sütunun veya ifadenin değerini 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şlevinin aksine üçüncü parametre döndürülür.

NVL2 işlevinin üç gerekli parametresi vardır ve NVL2 sözdizimi (orijinal, ifnotnull, ifnull), burada orijinal kontrol edilecek 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 olamaz. NVL2 işlevi tarafından döndürülen veri türü, ifnotnull parametresinin veri türüne eşittir. Bazı örneklere bakalım

Sorgu 1: dual'den nvl2'yi (1234, 1, 'a string') seçin;

Sorgu 2: ikiliden nvl2'yi (boş, 1234, 5678) seçin;

Sorgu 3: ikiliden nvl2'yi (substr ('abc', 2), 'bc değil', 'Alt dize yok') seçin;

Sorgu 1'deki ifnotnull parametresi bir sayıdır ve ifnull parametresi bir dizedir. Veri türleri uyumsuz olduğundan “ORA-01722: geçersiz numara” hatası döndürülür. Orijinal NULL ve sonuç 5678 olduğundan, ikinci istek ifnull parametresini döndürür. Üçüncü istek, 'bc' döndüren ve NVL2'yi ('bc', 'bc değil', 'Alt dize yok') çağıran SUBSTR işlevini kullanır - bu da ifnotnull parametresi - 'bc değil'.

BOŞALT işlevi

NULLIF işlevi, kimlik için iki değeri test eder. Aynılarsa, NULL döndürülür, aksi takdirde ilk parametre döndürülür. NULLIF işlevinin iki gerekli parametresi ve NULLIF sözdizimi (ifunequal, karşılaştırma_öğesi) vardır. İşlev iki parametreyi karşılaştırır ve bunlar aynıysa - NULL döndürülür, aksi takdirde ifunequal parametresi döndürülür. İstekleri göz önünde bulundurun

Sorgu 1: dual'den nullif (1234, 1234) seçin;

Birinci sorgu, parametreler aynı olduğundan NULL döndürür. 2. sorgudaki dizeler tarihe dönüştürülmez, ancak dizeler olarak karşılaştırılır. Dizeler farklı uzunluklarda olduğundan, eşit değilse 24-JUL-2009 döndürülür.

Şekil 10-4'te NULLIF işlevi, NVL2 işlevi içinde yuvalanmıştır. NULLIF işlevi, ifunequal parametresindeki ifadenin bir parçası olarak SUBSTR ve UPPER işlevlerini kullanır. EMAIL sütunu, adı 4 karakter uzunluğunda olan çalışanlar için soyadıyla birleştirilmiş adının ilk harfini döndüren bu ifadeyle karşılaştırılır. Bu değerler eşit olduğunda NULLIF, NULL değerini, değer ise 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şlevini kullanma

BİRLEŞTİRME 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 istediğiniz kadar isteğe bağlı parametreye ve ifade NULL değilse sonucun ifade1 olduğu COALESCE sözdizimine (ifade1, ifade2, ..., ifade) sahiptir, aksi takdirde ifade NULL değilse ifade2 döndürülür. NULL, vb. COALESCE, iç içe NVL işlevlerine eşittir

COALESCE (ifade1, ifade2) = NVL (ifade1, ifade2)

COALESCE (ifade1, ifade2, ifade3) = NVL (ifade1, NVL (ifade2, ifade3))

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

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

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

Sorgu 3: dual'den birleştirmeyi (substr ('abc', 4), 'bc değil', 'Alt dize yok') seçin;

Sorgu 1 dördüncü parametreyi döndürür: bir dize, çünkü bu NULL olmayan ilk parametredir. Tüm parametreler NULL olduğundan, sorgu iki NULL döndürür. Sorgu 3, ilk parametreyi değerlendirir, bir NULL değeri alır ve NULL olmayan ilk parametre olduğu için ikinci parametreyi döndürür.

Zaten aşina iseniz NVL2 fonksiyon parametreleri kafa karıştırıcı olabilir. NVL işlevi... NVL (orijinal, eğer boş ise), değer NULL değilse orijinal, aksi takdirde boş ise döndürür. NVL2 (orijinal, ifnotnull, ifnull), orijinal NULL değilse ifnotnull, aksi takdirde null döndürür. Karışıklık, NVL işlevinin ikinci parametresinin ifnull, NVL2'de ise ifnotnull olması gerçeğinden kaynaklanmaktadır. Bu yüzden fonksiyondaki parametrenin konumuna güvenmeyin.

KOD ÇÖZME işlevi

DECODE işlevi, eşitlik için ilk iki parametreyi kontrol ederek ve eşitlerse üçüncü bir değer veya eşit değillerse başka bir değer döndürerek if-then-else mantığını uygular. DECODE işlevinin üç gerekli parametresi ve DECODE sözdizimi vardır (expr1, comp1, iftrue1,,). Bu parametreler, aşağıdaki sözde kod örneğinde gösterildiği gibi kullanılır.

EĞER ifade1 = comp1 sonra iftrue1 döndür

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

Aksi takdirde, ifadeN = compN ise, iftrueN değerini döndürür.

Aksi takdirde NULL | iffalse döndürür;

İlk olarak, ifade1 comp1 ile karşılaştırılır. Eşitlerse, iftrue1 döndürülür. İfade1, comp1'e eşit değilse, bundan sonra ne olacağı, comp2 ve iftrue2 parametrelerinin belirtilmiş olup olmamasına bağlıdır. 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 setinde eşleşme bulunamazsa, bu parametre belirtilmişse iffalse veya NULL döndürülür.

DECODE işlevindeki tüm parametreler ifadeler olabilir. Dönüş türü, ilk doğrulama öğesinin türüne eşittir - parametre comp 1. İfade ifadesi 1 dolaylı olarak comp parametresinin veri türüne dönüştürülebilir1. Mevcut tüm diğer kompozisyon seçenekleri 1 ... kompN ayrıca dolaylı olarak comp'e dönüştürülebilir 1. DECODE, NULL değerini başka bir NULL değerine eşit olarak ele alır, yani. ifade1 NULL ise ve comp3 NULL ise ve comp2 NULL değilse, iftrue3 döndürülür. Bazı örneklere bakalım

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

Sorgu 2: ikiliden kod çözmeyi (1234, 123, '123 is a match', 'No Match') seçin;

Sorgu 3: kod çözmeyi seçin ('search', 'comp1', 'true1', 'comp2', 'true2', 'search', 'true3', substr ('2search', 2, 6), 'true4', ' false ') ikiliden;

Birinci sorgu, 1234 ve 123 değerlerini karşılaştırır. Eşit olmadıkları için iftrue1 yoksayılır ve iffalse değeri tanımlanmadığından NULL döndürülür. İkinci istek, iffalse belirtilmemiş olması dışında istek 1 ile aynıdır. 1234, 123'e eşit olmadığı için iffalse - 'Eşleşme yok' döndürülür. Üç istek, arama değeriyle eşleşip eşleşmediğini görmek için parametre değerlerini kontrol eder. comp1 ve comp2 parametreleri "arama" ile eşit değildir, bu nedenle iftrue1 ve iftrue2 sonuçları atlanır. Eşleşme, comp3'ün (parametre konumu 6) üçüncü karşılaştırmasında bulunur ve dönüş değeri iftrue3 (parametre 7) 'true3' olur. Bir eşleşme bulunduğundan, başka bir hesaplama yapılmaz. Yani, comp4 (parametre 8) değerinin de ifade1 ile eşleşmesine rağmen, önceki karşılaştırmada bir eşleşme bulunduğundan bu ifade asla hesaplanmaz.

CASE ifadesi

Tüm üçüncü ve dördüncü nesil programlama dilleri vaka yapısını uygular. DECODE işlevi gibi, CASE ifadesi de if-then-else mantığını uygulamanıza izin verir. CASE ifadesini kullanmak için iki seçenek vardır. Basit bir CASE ifadesi, bir kez karşılaştırılacak kaynağı ayarlar ve ardından gerekli tüm test koşullarını listeler. Aranan CASE, her koşul için her iki ifadeyi de değerlendirir.

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

ÖRNEK arama_ifadesi

WHEN karşılaştırma_ifade1 SONRA iftrue1

)

TRUNC, m ondalık basamağa kesilen n sayısını döndürür. m parametresi atlanabilir - bu durumda, n bir tam sayıya kısaltılır.

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

TRUNC (100.25678, 2) X4

DUAL'DEN

İŞARET (n) işlevi

İŞARET işlevi bir sayının işaretini belirler. n pozitifse, fonksiyon 1 döndürür. n negatifse, -1 döndürülür. Sıfıra eşitse 0 döndürülür. Örneğin:

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

DUAL'DEN

Bu işlevin ilginç bir özelliği, m'yi sıfıra eşit geçirme yeteneğidir - bu durumda, 0 hatasına bölme yoktur.

GÜÇ (n, m) işlevi

GÜÇ işlevi, n'yi m gücüne yükseltir. Derece, bu işlevin yeteneklerini önemli ölçüde genişleten kesirli veya negatif olabilir.

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

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şlevi çağırırken bir istisna oluşabilir. Örneğin:

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

DUAL'DEN

V bu durum negatif bir sayının karekökü hesaplanmaya çalışılır ve bu, ORA-01428 "Argüman aralık dışı" hatasıyla sonuçlanacaktır.

SQRT (n) işlevi

Bu işlevİadeler Kare kök numaradan Örneğin:

KARE SEÇ (100) X

DUAL'DEN

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

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

SELECT EXP (2) X1, LN (1) X2, LN (EXP (2)) X3

sayılarla TO_CHAR işlevi

Verileri diğer veri türlerine dönüştürmek için işlevler. TO_CHAR (sayı) bir sayıyı metne dönüştürür. TO_NUMBER (dize), metni sayıya dönüştürür.

DUAL'DEN SEÇİM TO_NUMBER (`12345"), DUAL'DEN SEÇİM 12345 12345 döndürür.

Laboratuvar işi. Görüntülenen sayıların biçimini değiştirme

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

Egzersiz yapmak:

Şekil 1'de gösterilen formatta hr.employees tablosundan çalışanlar için ad, soyad ve maaş bilgilerini görüntüleyen bir sorgu yazın. 3.4-1:

Pirinç. 3.4 -1

Bu durumda veriler en yüksek maaşa sahip çalışanlar için ilk satırlar görünecek şekilde sıralanmalıdır.

Not:

Şekil 1'deki bazı maaş değerleri. 3.4-1 değişti, bu nedenle değerlerinizle eşleşmeyebilir.

Çözüm:

Adını "Ad", soyadını "Soyadı", TO_CHAR (MAaş, "L999999999,99") Olarak "Maaş" Olarak İK.çalışanlardan MAAŞ AÇIKLAMAYA GÖRE SİPARİŞ olarak SEÇİN.

TO_NUMBER ve TO_DATE İşlevleri

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

SEÇME BUGÜN ("01.01.2010", `GG.AA.YYYY") İTİBAREN DUAL, '01.01.2010" tarihini döndürür;

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

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

Bir dizeyi TO_NUMBER (dize, biçim) sayısal bir değere dönüştürmek için işlev. En yaygın format değerleri tabloda listelenmiştir, bu yüzden bu fonksiyonun kullanımına örneklerle bakalım. Örnekler:

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

SEÇME TO_NUMBER ("500.000", "999G999") İTİBAREN DUAL, 500000 döndürür.

Tarih biçiminde RR öğesi

RR tarih ve saat biçimi öğesi, YY tarih ve saat biçimi öğesiyle benzerdir ancak diğer yüzyıllardaki tarih değerlerinin saklanması için ek esneklik sağlar. RR tarih saat biçimi öğesi, yılın yalnızca son iki basamağını belirterek 20. yüzyıldan 21. yüzyıla kadar olan tarihleri ​​saklamanıza olanak tanır.

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

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

Geçerli yılın son iki basamağı 00 ile 49 arasındaysa, döndürülen yılın ilk 2 basamağı, geçerli yılın ilk 2 basamağından 1 eksiktir.

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

NVL işlevi

NVL işlevi genellikle en yaygın olarak kullanılandır. İşlev iki parametre alır: NVL (ifade1, ifade2). İfade1'in ilk parametresi NULL değilse, işlev değerini döndürür. İlk parametre NULL ise, işlev bunun yerine ikinci parametre exp2'nin değerini döndürür.

Örnek: Tedarikçilerden NVL (supplier_city, n / a ") seçin:

Yukarıdaki SQL deyimi, eğer tedarikçi_şehir boş ise n / " döndürür, aksi takdirde tedarikçi_şehir döndürür.

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

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

Bu SQL ifadesi dönecek sağlayıcı adı alan eğer tedarikçi_açıklaması boş bir değer içerir. Aksi takdirde geri dönecek tedarikçi_açıklaması.

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

Bu SQL ifadesi, eğer 0 döndürdü komisyon alan boş bir değer içeriyor. yoksa geri dönerdi komisyon alan.

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

NVL işlevi, tanımsız bir değeri gerçek bir değere dönüştürmek için kullanılır: NVL ( ifade1, ifade 2), nerede:

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

ifade2- Tanımsız değerin yerine geçen 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ı türde olacaktır. ifade1.

NVL'yi farklı türler için dönüştürme:

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

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

Laboratuvar işi. NVL işlevini uygulama

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

Egzersiz yapmak:

İK.çalışan tablosundan çalışanların ad ve soyadları ile ilgili bilgileri ve çalışan için komisyon oranını (COMMISSION_PCT sütunu) gösteren bir sorgu yazın. Bu durumda, komisyonu tanımlanmayan çalışanlar için 0 değerini görüntülemeniz gerekir. Sorgunun sonucu, Şekil l'de gösterilenle aynı olmalıdır. 3.5-1.

Pirinç. 3.5 -1 (51. satırdan başlayan değerleri gösterir)

Çözüm:

İlgili istek kodu şu şekilde olabilir:

Adını “Ad”, soyadını “Soyadı” olarak, NVL (COMMISSION_PCT, 0) olarak İK.çalışanlardan “Komisyon oranı” olarak SEÇİN.

NVL işlevi

NVL işlevi genellikle en yaygın olarak kullanılandır. İşlev iki parametre alır: NVL (ifade1, ifade2). İfade1'in ilk parametresi NULL değilse, işlev değerini döndürür. İlk parametre NULL ise, işlev bunun yerine ikinci parametre ifade2'nin değerini döndürür.

Düşünmek pratik örnek... EMP tablosundaki COMM alanı NULL değerler içerebilir. Gibi bir sorgu yürütürken:

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

SCOTT.EMP'DEN

NULL değeri sıfır ile değiştirilecektir. Bir işlev kullanarak bir değer oluşturursanız, buna bir takma ad atandığını unutmayın. Sorgu sonuçları şöyle görünecektir:

EMPNO ENAME İLETİŞİM NVL_COMM
7369 SMITH 0
7499 ALLEN 300 300
7521 WARD 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 DEĞİRMENCİ 0

CEIL (n) işlevi

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

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

DUAL'DEN

TRUNC işlevi (n [, m])

TRUNC, m ondalık basamağa kesilen n sayısını döndürür. m parametresi atlanabilir - bu durumda, n bir tam sayıya kısaltılır.

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

TRUNC (100.25678, 2) X4

DUAL'DEN

İŞARET (n) işlevi

İŞARET işlevi bir sayının işaretini belirler. n pozitifse, fonksiyon 1 döndürür. n negatifse, -1 döndürülür. Sıfıra eşitse 0 döndürülür. Örneğin:

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

DUAL'DEN

Bu işlevin ilginç bir özelliği, m'yi sıfıra eşit geçirme yeteneğidir - bu durumda, 0 hatasına bölme yoktur.

GÜÇ (n, m) işlevi

GÜÇ işlevi, n'yi m gücüne yükseltir. Derece, bu işlevin yeteneklerini önemli ölçüde genişleten kesirli veya negatif olabilir.

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

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şlevi çağırırken bir istisna oluşabilir. Örneğin:

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

DUAL'DEN

Bu durumda, ORA-01428 "Argüman aralık dışı" hatasıyla sonuçlanacak olan negatif bir sayının karekökü hesaplanmaya çalışılır.

SQRT (n) işlevi

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

KARE SEÇ (100) X

DUAL'DEN

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

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

SELECT EXP (2) X1, LN (1) X2, LN (EXP (2)) X3