T-SQL NULL Değer İşleme Fonksiyonları: COALESCE, ISNULL ve NULLIF

Bu makalede tablomuzda Null dönen kolonlar belirlemiş olduğumuz herhangi bir default değerle yeni bir değer set edebiliriz. Makale başlığında belirtilen fonksiyonlar kullanılmadan aşağıdaki case-when-then-else-end yapısıyla bu sorunu çözebiliriz.

Aşağıdaki sorgu ilgili tablomuzdaki genel değerine bakalım.

select MusteriAdi,Bolge from Musteriler

Sorgumuzu yukarıda belirtildiği gibi yapalım.

select MusteriAdi,
case when Bolge IS NULL THEN 'Bilinmiyor'
else Bolge
end
from Musteriler

Yukarıdaki uzun uzadıya kod yazmak yerine aşağıdaki fonksiyonlar kullanarak işlemler yapılabilir.

COALESCE, parametre olarak verilen ifadeleri sırayla kontrol eder ve NULL olarak gördüğü değeri bizim verdiğimiz parametreye göre değişim işlemi yapmaktadır. Birden fazla parametre alabilir 

select MusteriAdi, coalesce(Bolge,'Bilinmiyor')  from Musteriler

Birden fazla değer döndürülmesi gerekiyorsa aşağıdaki komut benzeri kullanılabilir.

SELECT 
    MusteriAdi,
    COALESCE(Email, Telefon, 'İletişim bilgisi yok') AS Iletisim
FROM Musteriler;

ISNULL, belirtilen ifade NULL ise yerine kullanılacak değeri döndürür. Sadece 2 parametre alır. Daha hızlı çalışabilir. Bu komut coalesce fonksiyonuyla aynı yapıda çalışmaktadır.

select MusteriAdi, isnull(Bolge,'BilinmiyorX') from Musteriler

NULLIF, iki ifade birbirine eşitse NULL, farklıysa birinci ifadeyi döndürür. Örnek üzerinden gidelim.

select nullif(0,0)

select nullif(3,1)

Bazen toplam stok düzeyinin ortalamasını almak isteriz. Bunun için tüm stok düzeyi toplanıp ortalaması alınmaktadır.

Yukarıdaki ürünler tablosuna select çektiğimizde bazı satırların sıfır geldiği bununda sonucumuzu etkilemektedir. Bunun için sıfır olan değerlerin çıkarılması gerekmektedir.

Şimdi nullif fonksiyonunu kullanıp sıfır olan değerlerin null dönmesini sağlayıp sağlıklı sonuç dönmesini sağlayalım.

select avg(nullif(HedefStokDuzeyi,0)) from Urunler

Bu fonksiyonlar, veritabanı sorgularında NULL değerleri yönetmek için güçlü araçlardır. COALESCE daha esnek ve standart olduğu için çoğu durumda tercih edilebilir, ancak basit senaryolarda ISNULL daha performanslı olabilir. NULLIF ise özel durumlar için oldukça kullanışlıdır.

Başka makalede görüşmek dileğiyle..

“De ki: Eğer (haktan) saparsam, kendi aleyhime sapmış olurum. Eğer doğru yolu bulursam, bu da Rabbimin bana vahyettiği (Kur’an) sayesindedir. Şüphesiz O, işitendir, yakındır.” Sebe’ Suresi; 50. Ayet

Author: Yunus YÜCEL

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir