0Pricing
SQL Interview Prep · Ders

COALESCE, NULLIF ve ISNULL

Varsayılan değerleri kullanmayı ve COALESCE ile sağlayıcıya özgü işlevler arasındaki farkı öğrenin.

COALESCE, NULLIF ve ISNULL, CoddyKit'te ücretsiz bir SQL Interview Prep dersidir. Bu, 4 dersinin 3. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, SQL Interview Prep öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. SQL Interview Prep kursu toplamda 4 dersten oluşur.

NULL Değerlerini Değiştirme

NULL değerini algılayabildiğinize göre, sıradaki mülakat becerisi onu makul bir varsayılan değerle değiştirmektir. Bunun için taşınabilir, standart araç COALESCE işlevidir.

Bunun yanında belirli bir değeri NULL'a dönüştürerek ters yönde çalışan NULLIF işleviyle ve adayların sıkça COALESCE ile karıştırdığı üretici işlevleri ISNULL (SQL Server) ile IFNULL (MySQL) ile tanışacaksınız.

Özellikle argüman sayısı ve dönüş türü bakımından her birinin farkını tam olarak bilmek, sık sorulan bir ön eleme sorusudur.

COALESCE Temelleri

COALESCE, istediği sayıda argüman alır ve soldan sağa tarayarak NULL olmayan ilk argümanı döndürür. Tüm argümanlar NULL ise NULL döndürür.

ANSI standardıdır ve tüm büyük veritabanlarında çalışır; bu nedenle varsayılan yanıtınız olmalıdır. Görüntüleme, hesaplama veya gruplama için yedek değerler sağlamak amacıyla kullanın.

-- Show 0 instead of NULL for missing bonuses
SELECT name, COALESCE(bonus, 0) AS bonus
FROM employees;

-- Multiple fallbacks, first non-NULL wins
SELECT COALESCE(mobile_phone, home_phone, 'no phone') AS contact
FROM customers;

COALESCE Kısa Devreli Çalışır

Mülakatı yapanların özellikle yokladığı bir ayrıntı şudur: COALESCE, kavramsal olarak argümanları soldan sağa değerlendirir ve NULL olmayan ilk argümanda durur. Bu nedenle daha önceki bir argüman sonuç verdiğinde, sonraki pahalı bir ifadeye gerek kalmaz.

Uygulamada iyileştiriciler bazı motorlarda yine de istekli değerlendirme yapabilir; bu yüzden sıfıra bölme gibi hatalara karşı koruma sağlamak için buna güvenmeyin. Ancak hangi değerin seçileceğine ilişkin soldan sağa öncelik garantilidir.

-- Prefer the manual override, else the computed value,
-- else a constant default
SELECT COALESCE(manual_price, list_price * 1.1, 9.99) AS price
FROM products;

COALESCE ve Sonuç Veri Türü

İnce bir tuzak şudur: COALESCE sonucunun veri türü yalnızca ilk argümana göre değil, tüm argümanların birleşik tür önceliğine göre belirlenir. Birbiriyle uyumsuz türlerin karıştırılması hatalara veya beklenmedik kesilmelere yol açabilir.

Örneğin bir tamsayı sütunu ile metin varsayılan değer üzerinde COALESCE kullanmak, motora bağlı olarak başarısız olabilir veya örtük tür dönüşümüne yol açabilir. Mülakatı yapanlar bunu türleri düşünüp düşünmediğinizi ölçmek için kullanır.

-- Risky: integer column with a string fallback
-- may error or force a cast depending on dialect
SELECT COALESCE(score, 'N/A') FROM tests;

-- Safer: keep the fallback type-compatible, or cast explicitly
SELECT COALESCE(CAST(score AS VARCHAR), 'N/A') FROM tests;

ISNULL (SQL Server) ve COALESCE Karşılaştırması

SQL Server'da ISNULL(expr, replacement) bulunur. COALESCE'e benzer görünür, ancak mülakatı yapanların karşılaştırmayı sevdiği önemli farkları vardır:

  • Argüman sayısı: ISNULL tam olarak iki argüman alır; COALESCE ise birden çok argüman alabilir.
  • Dönüş türü: ISNULL, ilk argümanın türünü kullanır; bu da yerine konan değerin kesilmesine yol açabilir. COALESCE, birleşik tür önceliğini kullanır.
  • Taşınabilirlik: ISNULL yalnızca SQL Server'a özgüdür; COALESCE, ANSI standardıdır.

Sözlü olarak belirtmeniz gereken öneri: Taşınabilirlik ve öngörülebilir tür davranışı için COALESCE'i tercih edin.

-- SQL Server: ISNULL may truncate the replacement to
-- the first argument's type (e.g. CHAR(1))
SELECT ISNULL(code, 'UNKNOWN') FROM items;
-- If code is CHAR(1), 'UNKNOWN' becomes 'U'

-- COALESCE picks the wider type and keeps 'UNKNOWN'
SELECT COALESCE(code, 'UNKNOWN') FROM items;

IFNULL ve NVL

Diğer diyalektlerin kendilerine özgü iki argümanlı kısa biçimleri vardır:

  • MySQL / SQLite: IFNULL(expr, replacement)
  • Oracle: NVL(expr, replacement) ve ayrıca then/else mantığı için NVL2

Bu üçünün tümü iki argümanlı bir COALESCE gibi çalışır. Özellikle MySQL veya Oracle kullanım biçimi sorulursa bunları adlandırın; aksi durumda COALESCE kullanın.

-- MySQL
SELECT IFNULL(bonus, 0) FROM employees;

-- Oracle
SELECT NVL(bonus, 0) FROM employees;
-- NVL2(bonus, 'has bonus', 'no bonus') -> if/else on NULL

NULLIF: Ters Yönde Çalışma

NULLIF(a, b), a = b olduğunda NULL döndürür; aksi durumda a değerini döndürür. COALESCE'in tersine, bilinçli olarak bir NULL oluşturur.

En bilinen kullanımı sıfıra bölmeye karşı koruma sağlamaktır. Paydayı NULLIF(denominator, 0) içine alın: değer sıfırsa bölen NULL olur ve bölme işleminin tamamı hata vermek yerine NULL döndürür.

-- Avoid divide-by-zero: returns NULL instead of erroring
SELECT revenue / NULLIF(orders, 0) AS avg_order_value
FROM daily_stats;

-- NULLIF(5, 5) -> NULL
-- NULLIF(5, 3) -> 5

NULLIF ve COALESCE'i Birleştirme

Bu iki işlev birbirini çok iyi tamamlar. Mülakatlarda kullanılan klasik tek satırlık ifade, “sipariş olmadığında 0 gösteren güvenli bölme” işlemidir. Hatayı önlemek için NULLIF'i, ortaya çıkan NULL değerini değiştirmek için de COALESCE'i kullanın.

Bu kısa kalıp, uç durumu ve sunumu tek bir ifadede ele aldığınızı göstererek konuya hâkimiyetinizi yansıtır.

SELECT
  COALESCE(revenue / NULLIF(orders, 0), 0) AS avg_order_value
FROM daily_stats;

-- orders = 0 -> NULLIF gives NULL -> division gives NULL
-- -> COALESCE turns it into 0

Boş Dizeleri NULL Olarak Ele Alma

NULLIF'in bir başka pratik kullanımı, boş dizeleri NULL'a dönüştürerek bunların tek biçimde birleştirilebilmesini sağlamaktır. Kirli verilerde NULL ile '' sıklıkla bir arada bulunur; bu işlem ikisini de standartlaştırır.

Bu kalıbı şöyle okuyun: “değer boşsa onu NULL yap, ardından varsayılan değere dön.” Bu, “boşları ve eksik değerleri nasıl aynı şekilde ele alırsınız?” sorusuna temiz ve taşınabilir bir yanıttır.

-- Treat both '' and NULL as missing, default to 'Anonymous'
SELECT COALESCE(NULLIF(TRIM(username), ''), 'Anonymous')
FROM users;

Birleştirmeler Boyunca COALESCE Kullanımı

Bir LEFT JOIN sonrasında eşleşmeyen satırlar sağ tarafta NULL değerler üretir. COALESCE bunları çıktıda anlamlı varsayılan değerlere dönüştürür; bu, çok yaygın bir raporlama gereksinimidir.

Burada siparişi olmayan müşteriler yine de görünür (LEFT JOIN sayesinde) ve toplamları NULL yerine 0 olarak gösterilir. COALESCE işleminin birleştirmeden sonra, birleştirmenin içinde değil, gerçekleştiğini belirtmeniz değerlendirme sırasını anladığınızı gösterir.

SELECT
  c.name,
  COALESCE(SUM(o.amount), 0) AS total_spent
FROM customers c
LEFT JOIN orders o ON o.customer_id = c.id
GROUP BY c.name;
-- Customers with no orders get 0 instead of NULL

Mülakatta Vurgulanacak Noktalar

Değer değiştirme araçlarının özeti:

  • COALESCE(a, b, ...): NULL olmayan ilk değeri döndürür; birden çok argüman alır, ANSI standardıdır ve türü önceliğe göre belirlenir. Varsayılan tercihtir.
  • ISNULL / IFNULL / NVL: iki argümanlı, üreticiye özgü kısa biçimlerdir; ISNULL ilk argümanın türüne göre kesmeye yol açabilir.
  • NULLIF(a, b): değerler eşit olduğunda NULL döndürür; sıfıra bölmeye karşı koruma sağlamak ve boşları standartlaştırmak için kullanışlıdır.
  • Güvenli ve sunuma uygun bölme için COALESCE(x / NULLIF(y, 0), 0) ifadesini birleştirerek kullanın.

COALESCE ile başlayın ve üreticiye özgü seçeneklerden yalnızca diyalekt sabitse söz edin.

Hızlı Kontrol

Güvenli bölme ifadesini seçin.

Özet

Artık NULL değerlerini değiştirebilir ve üretebilirsiniz:

  • COALESCE, birden çok argümandaki ilk NULL olmayan değeri döndürür; taşınabilir varsayılan tercihtir.
  • ISNULL (SQL Server), IFNULL (MySQL) ve NVL (Oracle), iki argümanlı kısa biçimlerdir; ISNULL ilk argümanın türüne göre kesmeye yol açabilir.
  • NULLIF(a, b), iki değer eşit olduğunda NULL döndürür; sıfıra bölmeye karşı koruma ve boş dize standardizasyonu için idealdir.
  • Güvenli, sunuma uygun ifadeler oluşturmak ve LEFT JOIN sonrası NULL değerlerine varsayılan değer atamak için bunları birleştirin.

Son ders: NULL değerinin toplama işlevleri, birleştirmeler ve DISTINCT içinde nasıl davrandığı.

Sıkça Sorulan Sorular

“COALESCE, NULLIF ve ISNULL” dersi ücretsiz mi?

Evet — “COALESCE, NULLIF ve ISNULL” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve SQL Interview Prep kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. SQL Interview Prep kursu toplamda 4 dersten oluşur.

“COALESCE, NULLIF ve ISNULL” dersinde ne öğreneceğim?

Varsayılan değerleri kullanmayı ve COALESCE ile sağlayıcıya özgü işlevler arasındaki farkı öğrenin. SQL Interview Prep ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

SQL Interview Prep öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te SQL Interview Prep, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 3. dersidir.

“COALESCE, NULLIF ve ISNULL” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu SQL Interview Prep dersinde kod yazıp çalıştırabilir miyim?

Evet. Her SQL Interview Prep dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Üç Değerli Mantık ve UNKNOWN
  2. IS NULL, IS NOT NULL ve NULL Güvenli Eşitlik
  3. COALESCE, NULLIF ve ISNULL
  4. Toplulaştırmalarda, Birleştirmelerde ve DISTINCT içinde NULL Değerler
← SQL Interview Prep Sayfasına Dön