coalesce(), isnull(), case when yapılarına hızlı bakış açısı
12 Kasım 2016 Cumartesi
Sorgularımızda karşımıza çıkan null değerleri anlamlı hale getirmek için çokça kullandığımız isnull() fonksiyonu ile başlıyoruz. Bunun için örnek veri kümesi olarak Northwind veritabanı, Employees tablosunu kullanacağız.
ISNULL()
SELECT e.FirstName as Employee, ISNULL(m.firstname, 'No Manager') as Manager
FROM Employees e left join Employees m
ON e.ReportsTo= m.EmployeeID
Bakınız Resim-1.
Yukarıdaki örnek'te, çalışan tablosu üzerinden bir self join gerçekleştiriyoruz ve Andrew isimli çalışanın üzerinde başka kimse olmadığı için Null değer geliyor. Örnekteki gibi isnull() fonksiyonu kullanarak boş olan satırı daha anlamlı hale getirmiş oluyoruz.
CASE WHEN
Aynı senaryoyu bu kezde case when ile yapalım..
SELECT e.FirstName AS Employee,
CASE WHEN m.FirstName IS NULL THEN 'No Manager' ELSE m.FirstName END AS Manager
FROM Employees e left join Employees m
ON e.ReportsTo= m.EmployeeID
Bu sorgu ile yukardaki çıktının aynısını elde etmiş oluyoruz. Devam edelim..
COALESCE()
Coalesce fonksiyonu benim favorim olduğu için sona bıraktım :)
MSDN'nin tanımına göre, coalesce(), null olmayan ilk değeri hızlıca getiren fonksiyon olarak ifade edilmiştir. Kullanım olarak isnull() fonksiyonuna benzer ancak ihtiyaca göre bize fazlasını da verir..
İlk bakışta sözcüğün akılda kalması zor olabilir bu açıdan kelimeyi şu şekilde öğelerine ayırmakta fayda var.. COAL-ESC(ape)-E gibi..
En basit kullanım şekli:
SELECT COALESCE(null,'Value') (Parantez içi sıralama değişebilir.)
İçersinde 1'den fazla kolon olabilir. MSDN tanımında olduğu gibi tüm kolonları sırasıyla gezer ve null olmayan ilk değeri bize üretir.
SELECT COALESCE(NULL,'Column1', 'Column2','Column3',...)
Umarım faydalı bir yazı olmuştur. Bir sonraki makalemde görüşmek üzere.