SQL'de NULL İşleme: COALESCE ve NULLIF Pratik Rehberi
Veritabanında NULL değerler her zaman sorun çıkarır. Bir müşterinin telefon numarası, ürünün açıklaması ya da ödeme tarihi boş olabilir. bu durumları düzeltmek için SQL'de iki temel fonksiyon var: COALESCE ve NULLIF.
COALESCE, soldan sağa doğru giderek ilk NULL olmayan değeri bulur ve döndürür. Örneğin müşterinin iş telefonu yoksa ev telefonunu, o da yoksa cep telefonunu göstermek istiyorsun.
1SELECT 2musteri_adi,3COALESCE(is_telefonu, ev_telefonu, cep_telefonu, 'Telefon yok') AS iletisim4FROM musteriler;Çıktı:
1musteri_adi | iletisim2---3Ahmet | 05321234564Ayşe | 02167890125Mehmet | Telefon yokEğer ilk üç alan da NULL ise 'Telefon yok' yazı döner. Bu basit ama güçlü bir yöntemdir.
NULLIF tam tersidir. İki değeri karşılaştırır; eğer eşitse NULL döner, değilse birinci değeri döner. Örneğin satış fiyatı ile maliyet aynıysa (yani kar yok) bunu NULL olarak işaretlemek isteyebilirsin.
1SELECT 2urun_adi,3satis_fiyati,4maliyet,5NULLIF(satis_fiyati - maliyet, 0) AS kar6FROM urunler;Çıktı:
1urun_adi | satis_fiyati | maliyet | kar2---3Kalem | 10 | 5 | 54Defter | 20 | 20 | NULL5Silgi | 15 | 8 | 7Defter'in karı 0 olduğu için NULLIF bunu NULL'a çevirdi. Böylece raporlarda sıfır kar ile veri yok arasında ayrım yapabilirsin.
Gerçek dünyada ikisini beraber kullanırız. Mesela müşteri adı NULL ise 'Bilinmiyor' yaz, ama eğer eski adı ve yeni adı aynıysa NULL olarak işaretle (güncelleme olmamış demektir).
1SELECT 2COALESCE(musteri_adi, 'Bilinmiyor') AS ad,3NULLIF(eski_ad, yeni_ad) AS ad_degisimi4FROM musteriler;Bu şekilde eksik ve yanlış veriyi aynı sorguda temizleyebilirsin. Veri kalitesi artar, raporlar güvenilir olur.
0 yorum