Sql COALESCE () Fonksiyonu ( ‘Null fonksiyonlar’ ile farkları )

Bu yazıda aslında benim de yeni tanıştığım COALESCE() fonksiyonunun işlevini aktarmaya çalışacağım. COALESCE() fonksiyonunu anlatırken benzer işler yapan SqlServer da ISNULL(), Oracle sql de NVL() ve Mysql de ISNULL() olmasına rağmen sqlserver dan biraz daha farklı işlevinden dolayı IFNULL() fonksiyonlarının işlev farklılıklarına değineceğim.

Öncelikle genel kısa bir tanım yaparak başlayalım:
COALESCE() fonksiyonu, içerisine yazdığınız değerlerdeki İLK NULL olmayan değeri döndürür ve N sayıda parametre alabilir.
ISNULL() SqlServer a, NVL() Oracle a özgü iken, COALESCE() fonksiyonu ANSI standart komutu olduğundan, hemen hemen tüm veritabanlarında ortak kullanılabilir.
Kullanımı şu şekildedir:

COALESCE( ifade-1 , ifade-2 , ifade-3 , … , ifade-n )

Genel yazımına dikkat ederseniz ki tanımında da yer aldığı üzere, ISNULL ya da NVL den bir farkı daha gözükmektedir;
Bu da birden fazla ifadenin içerisine yazılmasına izin verdiğidir. isnull, nvl gibi fonksiyonlar size 2 değer hakkı tanır.

Bir farklılık ve COALESCE() nin güzelliği ise içerisine yazdığınız ifadelerin veri türlerinin aynı olma zorunluluğunun olmayışıdır. Diğer ‘null fonksiyonlar’ yazdığınız 2 ifadenin de veri türlerinin aynı olması ister.

Bir tane daha.. Örnek olarak NVL() içerisine yazılan ‘aynı türden iki ifadeye’ de null olup olmadığına bakar, fakat COALESCE() , içerisine yazdığınız ‘çok sayıda veri türleri aynı olması gerekmeyen ifadelere’ sırayla gider ve ilk bulduğu null olmayan ifade de kalır, diğerlerini önemsemez.

Tüm bu özelliklerini kullanabileceğimiz bir örnek yapacak olursak:
Bir kişinin iletişim bilgilerinin olduğu tabloyu varsayalım

AdSoyad(varchar), Telefon(int), e-mail(varchar),adres(varchar) kolonlarına sahip olsun.             Kişiyle iletişime geçebilecek alanı çekmek istiyorsunuz fakat tablonuzda çok fazla                   eksikliklerin olduğunun farkındasınız.

Bu örnekte coalesce fonksiyonunu kullanmanız gerekmektedir, yoksa içiçe isnull ya da nvl gibi fonksiyonlar kullanmanız gerekecekti;

COALESCE( Telefon , e-mail , adres , ‘-‘ )

Örneğimizden sonra başka bir senaryo ile Coalesce fonksiyonunun bir artısından daha bahsetmek isterim:

Senaryomuz şöyle:
Kişilerin bilgilerinin listelendiği bir tablomuz olsun. Bu bilgilerden bir tanesi de kişinin il bilgisi olsun.
Bu tabloyu create eden kişinin : En uzun isimli il ‘AFYONKARAHİSAR’ olduğunu ve bu stringin de uzunluğunun 14 olduğunu bildiğinden Il_Adi kolonunun uzunluğunu 14 olarak kısıtlayarak oluşturduğunu varsayalım. [Il_Adi varchar(14) ]

Bu tabloda Il_Adi kolonunda null değerler görüyorsunuz ve çekeceğiniz select te bu null lardan kurtulmak istiyorsunuz.

isnull( Il_Adi , ‘İl Bilgisi Girilmemiş’ )     yazdınız ve çalıştırdınız.
Sonuç: Il_Adi kolonu null olan değere baktığınızda   ‘İl Bilgisi Gir’   yazdığını görürsünüz. Bunun nedeni coalesce hariç, isnull gibi null fonksiyonlarının referans aldığı kolonun, ki burada Il_Adi dır, alan tipini ve uzunluğunu baz alması ve sizi kısıtlamasıdır. Il_Adi alanının uzunluğu 14 ile kısıtlandığından size de 14 haneye kadar izin vermektedir.
Siz eğer 14 hane olan ‘İl Bilgisi Gir’ yerine ‘İl Bilgisi Girilmemiş’ yazmak istiyorsanız ismi biraz akılda kalmayan, kelime anlamı ‘birleşim’ sayılabilecek ama tüm bunlara rağmen yetenekleri tartışılmaz   COALESCE()   fonksiyonunu kullanmanız gerekmektedir.

COALESCE( Il_Adi , ‘İl Bilgisi Girilmemiş’ )

Kolay gelsin..

Reklamlar

About ozanyay

İş Zekası ve Veri Ambarı Uzmanı
Bu yazı Data Warehouse, Pure SQL / PLSQL, sql, SQL Server, Veri Tabanı içinde yayınlandı ve , , , , , , , , , , , , , , , olarak etiketlendi. Kalıcı bağlantıyı yer imlerinize ekleyin.

4 Responses to Sql COALESCE () Fonksiyonu ( ‘Null fonksiyonlar’ ile farkları )

  1. Nahide Haciyeva dedi ki:

    Teşekkürler.Konuyu çok anlatmışsınız

  2. Serhat ÇELİK dedi ki:

    COALESCE fonksiyonunu hiç kullanmadım. OCP sınavlarına hazırlanıyorum o vesile ile öğrendim. Daha öğrenilecek çok şey var sanırım. Elinize sağlık çok güzel bir yazı olmuş.

  3. Bahadir dedi ki:

    En net şekilde anlatan ilk google sayfası sizinki.
    Teşekkürler.
    COALESCE fonksiyonu parametre olarak giren n tane farklı tipte değerden null olmayan ilk değeri döner.

  4. ozanyay dedi ki:

    Çok teşekkürler..

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Google fotoğrafı

Google hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s