Carpe Diem'iyorum, gelecek için yazıyorum...
Oracle NVL Foksiyonu
Bu yazı Oracle veritabanında integer null bir değerin toplama işleminde `0` olarak nasıl eklenebileceğini göstermek amacıyla yazılmıştır. Veritabanımızdaki integer bir sütun, not null constraint`i ile tanımlanmamışsa boş olarak kaydedilebilir. Fakat biz bu alandaki değerin de içinde bulunduğu bir toplama işlemi yapmak istersek işlemin çıktısını boş olarak görürüz. Yapmamız gereken ise bu alandaki null değeri başka bir değerle değiştirmek. Eğer toplama işleminin sonucunu değiştirmek istemiyorsak değiştireceğimiz değerin `0` olması gerekmektedir.
NVL fonksiyonu null bir değeri başka bir değerle değiştirir!
Örnek bir veritabanımız olsun. Sicil numarası, ad, soyad, maaş ve bonus alanları içersin. 2 tane veri ekleyelim. İlk kayıtta maaş ve bonus alanları null olmasın, ikinci kayıtta ise maaş değeri null olmasın bonus değeri null olsun. Bu alanları sorguladığımızda aşağıdaki gibi bir sonuçla karşılaşırız:



Görüldüğü gibi maaş+bonus alanı boş olarak dönmektedir. Bu durumu düzeltmek için sql sorgumuz aşağıdaki gibi olmalıdır:

select ad, soyad, maas, bonus, maas+nvl(bonus,0);



Örnekte görüldüğü gibi sorgu istediğimiz sonucu döndürmüştür. NVL fonksiyonu günlük hayatta işlemlerimizi bir hayli kolaylaştırmaktadır.
Yazar: Oğuz Yılmaz Tarih: 22 Temmuz 2009
Okunma Sayısı: 1228 Etiketler: Oracle Sql MySql
Sizden gelenler...
>> sinan özkan << 22 Temmuz 2009 10:30
  • hacı güzel bişeymiş acaba başka veritabanlarında da aynı fonksiyon var mı
  • 1
    >> Oğuz Yılmaz << 22 Temmuz 2009 10:54
  • Evet Sinan diğer veritabanlarında da benzer fonksiyonlar var. MySql veritabanında `nvl` fonksiyonunun yerine IFNULL(birinci ifade, ikinci ifade), MsSql de ise ISNULL(birinci ifade, ikinci ifade) metotları mevcut. Ayrıca bu metotların daha genel bir formu olan COALESCE(birinci ifade, ikinci ifade) metodu da aynı iş için kullanılabilir.
  • 2
    >> mehmetulvi << 22 Temmuz 2009 12:42
  • Guzel bır fonksıyonmus yoksa kendımız bos yere fonksıyon yazacaktık.:)
  • 3
    >> Hasan Alper Öcalan << 22 Temmuz 2009 15:56
  • Evet, hem fonksiyon yazmaya zaman harcayacaktık, hem de sistemin o karmaşık kodu çalıştırması için bir sürü zaman geçecekti.. Bu harika oldu:) Teşekkürler Oğuz;)
  • 4
    >> Oğuz Yılmaz << 22 Temmuz 2009 16:11
  • Rica ederim Alper, senin ve Mehmet`in de dediği gibi performansı arttıracak bir fonksiyon ama kayıt sayısı gerçek anlamda fazla olduğunda sql tarafından gelecek bir yavaşlamanın da söz konusu olduğu unutulmamalıdır. Yine de şu aşamada bu fonksiyon bizi bir adım öne geçirecektir.
  • 5


    Soru, görüş ve önerileriniz için isminiz ve Fikriniz yeterlidir..


    Etiket Bulutu
    Açık Kaynak Belgesel Bilgisayar Mühendisliği Bilim-Teknik Burs C# Çevre Dünya DVD Film Formula-G Futbol Google Haftalık Gündem İnternet Kırşehir Kişisel Kitap Linux MySql Okul Oracle Özel Gün Program Proje SEO Silverlight Sql Tübitak Üniversite Webiner Windows
    Arama
    Her arayan bulamaz; ancak bulanlar, yalnız arayanlardır!
    En Çok Okunan Yazılar
    Neden Bilgisayar Mühendisi .. (1334)
    Oracle NVL Foksiyonu (1228)
    SharpDevelop IDE (1128)
    WampServer 80 Numaralı Port .. (998)
    Etme Demedim mi? (990)
    En Son Yorumlanan Yazılar
    Gazi Üniversitesi Mühendisl ..
    İnsanları daha az sevmem, a ..
    John Nash vs Tyler Durden
    Üçüncü Kitabı Beklerken
    Daron Yöndem ile Silverlight
    Ay Takvimi
    Ağustos '10 Haziran '10 Nisan '10 Şubat '10 Ocak '10 Kasım '09 Ekim '09 Eylül '09 Ağustos '09 Temmuz '09
    Takipte
    >> İlker Bay <<
    >> Mehmet Duran <<
    >> İskender Öksüz <<
    >> Hasan Alper <<
    >> Gökhan Besler <<
    >> Nuh Azgınoğlu <<
    >> Sinan Özkan <<
    >> İsmail Öz <<
    İstatistikler
    Online : 1
    Bugün : 138
    Bu Ay : 2131
    Bu Yıl : 59965
    Toplam : 90794