Ana içeriğe geç
Kesit SQL
Temel · Fonksiyonlar

COALESCE, NULLIF ve NULL ile hesap

NULL yerine varsayılan değer koymak ve sıfıra bölmeyi önlemek.

Uygulamada aç, 7 alıştırmayı çözÜcretsiz, hesap gerekmez, kurulum yok.

Bu sayfa dersin okuma sürümüdür. Metin bir kutuyu çalıştırmanı ya da adıma geçmeni söylüyorsa dersi uygulamada aç.

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.

Alıştırmalara geç (7)