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 iletisim
4FROM musteriler;

Çıktı:

1musteri_adi | iletisim
2---
3Ahmet | 0532123456
4Ayşe | 0216789012
5Mehmet | Telefon yok

Eğ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.

Reklam · TEST
AdSense Test ReklamıYazı arası (gönderi içi) · Yazı arası
1SELECT
2urun_adi,
3satis_fiyati,
4maliyet,
5NULLIF(satis_fiyati - maliyet, 0) AS kar
6FROM urunler;

Çıktı:

1urun_adi | satis_fiyati | maliyet | kar
2---
3Kalem | 10 | 5 | 5
4Defter | 20 | 20 | NULL
5Silgi | 15 | 8 | 7

Defter'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_degisimi
4FROM musteriler;

Bu şekilde eksik ve yanlış veriyi aynı sorguda temizleyebilirsin. Veri kalitesi artar, raporlar güvenilir olur.

Reklam · TEST
AdSense Test ReklamıGönderi altı · Görüntülü
konu hakkında tepkinizi verebilirsiniz