Ana içeriğe atla

SQL'de COALESCE() Fonksiyonu Nasıl Kullanılır (Örneklerle)

SQL COALESCE() fonksiyonunu null değerleri yönetmek, sütunları birleştirmek ve verinizi gerçek dünyadan örnekler ve ipuçlarıyla temizlemek için nasıl kullanacağınızı öğrenin.
Güncel 16 Nis 2026  · 5 dk. oku

Gerçek dünya verileriyle çalışırken eksik değerlere rastlamak neredeyse kaçınılmazdır. Veri setlerini temizlerken veya sütunları birleştirirken, SQL basit ama güçlü bir çözüm sunar: COALESCE() fonksiyonu. Bu öğreticide COALESCE() fonksiyonunun nasıl çalıştığını, ne zaman kullanmanız gerektiğini ve pratik örneklerle nasıl uygulayacağınızı—yalnızca birkaç satır SQL ile—göreceksiniz.

SQL'de COALESCE() Nedir?

SQL'deki COALESCE() fonksiyonu, bir ifade listesindeki ilk null olmayan değeri döndürür. Tüm değerler null ise null döner. Genellikle eksik değerleri ele almak veya birden fazla sütunu tek bir yedek çıktıda birleştirmek için kullanılır.

COALESCE() Ne Zaman Kullanılmalı?

Bu fonksiyon, birden çok sütundaki değerleri tek bir değerde birleştirmeniz gerektiğinde kullanışlıdır.

Örneğin, users adlı bir tabloda kullanıcıların work_email ve personal_email değerleri bulunur.

COALESCE() fonksiyonunu kullanarak, null değilse kullanıcının work_email adresini gösteren, aksi halde personal_email adresini gösteren email adlı bir sütun oluşturabiliriz.

user_id

work_email

personal_email

COALESCE() of

work_email and

personal_email

1

angel@datacamp.com

null

angel@datacamp.com

2

null

bruce@gmail.com

bruce@gmail.com

3

cath@datacamp.com

cath@gmail.com

cath@datacamp.com

COALESCE() Söz Dizimi

COALESCE(value_1, value_2, ...., value_n)

COALESCE() fonksiyonu en az bir değer (value_1) alır. Soldan sağa doğru listede ilk null olmayan değeri döndürür.

Örneğin, önce value_1 değerinin null olup olmadığını kontrol eder. Değilse value_1 değerini döndürür. Aksi halde value_2 değerinin null olup olmadığına bakar. Bu süreç liste tamamlanana kadar devam eder. 

COALESCE(), sütunlar, ifadeler veya sabitlerle kullanılabilir.

COALESCE() için Pratik Örnekler

Bu eğitimdeki kodu çevrimiçi olarak çalıştırın ve düzenleyin

Kodu çalıştır

Örnek 1: null değerleri bir sabitle değiştirme

countries tablosunda ülkeler ve ulusal günlerinin listesi olduğunu düşünün. Bazı ulusal gün değerleri null. COALESCE(), national_day içindeki eksik değerleri 'Unknown' sabit dizesiyle doldurur.

SELECT
   country_id,
   name, 
   national_day,
   COALESCE(national_day, 'Unknown') AS national_day_coalesced
FROM countries
ORDER BY country_id

Sonuçlar şu şekildedir:

country_id

name

national_day

national_day_coalesced

1

Aruba

null

Unknown

2

Afghanistan

1919-08-19T00:00:00.000Z

1919-08-19

3

Angola

1975-11-11T00:00:00.000Z

1975-11-11

4

Anguilla

1967-05-30T00:00:00.000Z

1967-05-30

national_day içindeki null değerin sabit Unknown ile nasıl değiştirildiğine dikkat edin. 

Örnek 2: İki sütun arasında seçim yapmak

products adlı bir tablomuz var. Ürün adını ve açıklamasını içeriyor. Bazı açıklamalar çok uzun (60 karakterden fazla). Bu durumda açıklamayı ürün adıyla değiştiriyoruz.

Aşağıdaki sorgu, uzun açıklamaları CASE ile NULL'a dönüştürüyor, ardından COALESCE() kullanarak ürün adına geri dönüyor.

SELECT DISTINCT
   product_name,
   description,
   COALESCE(
      CASE WHEN 
         LENGTH(description) >= 60 
         THEN NULL 
         ELSE description 
         END, 
      product_name) product_name_or_description
FROM products

Sonuçlar şu şekildedir:

product_name

description

product_name_or_description

G.Skill Ripjaws V Series

"Speed:DDR4-3200,Type:288-pin DIMM,CAS:14Module:4x16GBSize:64GB"

G.Skill Ripjaws V Series

G.Skill Ripjaws V Series

"Speed:DDR4-3200,Type:288-pin DIMM,CAS:15Module:4x16GBSize:64GB"

G.Skill Ripjaws V Series

Asus X99-E-10G WS

"CPU:LGA2011-3,Form Factor:SSI CEB,RAM Slots:8,Max RAM:128GB"

"CPU:LGA2011-3,Form Factor:SSI CEB,RAM Slots:8,Max RAM:128GB"

Supermicro X9SRH-7TF

"CPU:LGA2011,Form Factor:ATX,RAM Slots:8,Max RAM:64GB"

"CPU:LGA2011,Form Factor:ATX,RAM Slots:8,Max RAM:64GB"

product_name_or_description sütununun, description uzun olduğunda product_name değerini; aksi halde description değerini nasıl gösterdiğine dikkat edin.

Örnek 3: Birden fazla sütunla geri dönüş mantığı

Örnek 2'yi bir adım daha ileri taşıyabiliriz. Şu anda iki gereksinim olduğunu varsayalım:

  • description uzunluğu 60'tan azsa description görüntülensin.
  • Aksi halde, product_name uzunluğu 20'den az mı diye kontrol edin. Öyleyse product_name görüntülensin.
  • Aksi halde product görüntülensin.
SELECT DISTINCT
   product_name,
   description,
   COALESCE(
      CASE 
         WHEN LENGTH(description) > 50
         THEN NULL
         ELSE description
      END,
   CASE 
      WHEN LENGTH(product_name) > 14
      THEN NULL
      ELSE product_name
   END,
'product') AS product_name_or_description
FROM products
ORDER BY product_name

Sonuçlar şu şekildedir:

product_name

description

product_name_or_description

ADATA ASU800SS-128GT-C

Series:Ultimate SU800,Type:SSD,Capacity:128GB,Cache:N/A

product

ADATA ASU800SS-512GT-C

Series:Ultimate SU800,Type:SSD,Capacity:512GB,Cache:N/A

product

AMD 100-5056062

Chipset:Vega Frontier Edition Liquid,Memory:16GBCore Clock:1.5GHz

product

AMD 100-505989

Chipset:FirePro W9100,Memory:32GBCore Clock:930MHz

Chipset:FirePro W9100,Memory:32GBCore Clock:930MHz

product_name_or_description sütununun, product_name veya description uzunluklarına bağlı olarak product_name ya da description gösterdiğine dikkat edin.

Desteklenen SQL Motorları

COALESCE(), SQL Server (2008'den itibaren), Azure SQL Database, Azure SQL Data Warehouse, Parallel Data Warehouse, BigQuery ve Amazon RedShift'te çalışır.

İlgili SQL Fonksiyonları

Son Düşünceler

COALESCE() fonksiyonu, null değerleri ele almak ve SQL sorgularınızı sadeleştirmek için çok yönlü bir araçtır. Eksik verileri varsayılanlarla değiştirirken veya birden fazla sütunu tek bir sütunda birleştirirken, COALESCE() mantığınızı temiz ve okunaklı tutmaya yardımcı olur.

SQL becerilerinizi derinleştirmeye hazır mısınız? DataCamp'teki başlangıç seviyesine uygun ve kariyerinizi destekleyen şu kurslara göz atın:

SSS

COALESCE() içindeki tüm değerler NULL ise ne olur?

COALESCE() fonksiyonuna geçirilen tüm argümanlar NULL ise, fonksiyon NULL döndürür.

COALESCE(), ISNULL() veya IFNULL()'dan nasıl farklıdır?

  • ISNULL() (SQL Server) ve IFNULL() (MySQL, SQLite) yalnızca iki argüman kabul eder.
  • COALESCE() birden fazla argüman kabul edebilir ve SQL diyalektleri arasında daha standarttır.

  • COALESCE() ANSI SQL standardının bir parçasıdır; ISNULL() ve IFNULL() ise veritabanına özeldir.

COALESCE()'i ifadeler veya fonksiyonlarla kullanabilir miyim?

Evet, COALESCE() içinde sütun adları, sabitler, fonksiyonlar veya ifadeler kullanabilirsiniz.

COALESCE(LOWER(name), 'unknown')

COALESCE() kullanmanın bir performans maliyeti var mı?

Genel olarak hayır—COALESCE() etkilidir. Ancak, karmaşık ifadelerle veya büyük sorgular içinde kullanırsanız, yazım şekline bağlı olarak veritabanı gerekenden fazla ifadeyi değerlendirebilir.

COALESCE() farklı veri tipleriyle çalışır mı?

Evet, ancak tüm argümanlar örtük olarak ortak bir veri tipine dönüştürülebilir olmalıdır. Aksi halde, SQL motorunuza bağlı olarak tipi dönüştürme hatası dönebilir.

COALESCE() fonksiyonlarını iç içe kullanabilir miyim?

Evet, iç içe kullanabilirsiniz; ancak COALESCE() zaten birden çok argümanı ele aldığı için buna nadiren ihtiyaç vardır:

COALESCE(col1, COALESCE(col2, 'default'))

Bu, şuna eşdeğerdir:

COALESCE(col1, col2, 'default')
Konular

Popüler SQL Kursları

Kurs

SQL’e Giriş

2 sa
1.5M
Sadece iki saat içinde SQL kullanarak ilişkisel veritabanlarını nasıl oluşturacağınızı ve sorgulayacağınızı öğrenin.
Ayrıntıları GörRight Arrow
Kursa Başla
Devamını GörRight Arrow