COALESCE: ilk NULL olmayan
COALESCE(a, b, c) soldan sağa bakar ve NULL olmayan ilk değeri döndürür.
SELECT first_name,
COALESCE(city, 'Bilinmiyor') AS sehir,
COALESCE(email, 'e-posta yok') AS eposta
FROM customers
LIMIT 15;
SQLite/MySQL'de IFNULL(a, b), SQL Server'da ISNULL(a, b), Oracle'da NVL(a, b) iki argümanlı karşılıklarıdır. COALESCE standarttır, her yerde çalışır.
NULLIF: eşitse NULL yap
NULLIF(a, b), a = b ise NULL, değilse a döndürür. En yaygın kullanımı sıfıra bölmeyi önlemektir:
SELECT name, stock,
ROUND(price / NULLIF(stock, 0), 2) AS stok_basina_fiyat
FROM products
ORDER BY stock
LIMIT 5;
Stok 0 olduğunda bölme hata vermek (veya sonsuz) yerine NULL üretir.
Derinleş: COALESCE, NULLIF ve ortalamalar
Aynı veride iki farklı “ortalama kurye puanı” hesaplanabilir; hangisinin doğru olduğu soruya bağlıdır:
SELECT ROUND(AVG(rating), 2) AS puanlilarin_ortalamasi,
ROUND(AVG(COALESCE(rating, 0)), 2) AS bos_sifir_sayilirsa
FROM lk_couriers;
İkinci değer daha düşüktür, çünkü puanı olmayan kuryeleri 0 puan almış gibi sayar. Raporda hangisini kullandığını belirt. NULLIF(x, 0) ise tersini yapar: sıfırı “bilinmeyen”e çevirir ve sıfıra bölmeyi önler.