Lewati ke konten utama

Cara Menggunakan Fungsi COALESCE() di SQL (Disertai Contoh)

Pelajari cara menggunakan fungsi SQL COALESCE() untuk menangani nilai null, menggabungkan kolom, dan merapikan data Anda dengan contoh dan tips dunia nyata.
Diperbarui 4 Jun 2026  · 5 mnt baca

Saat bekerja dengan data dunia nyata, nilai yang hilang hampir tak terelakkan. Baik saat Anda membersihkan dataset atau menggabungkan kolom, SQL menawarkan solusi yang sederhana namun kuat: fungsi COALESCE(). Tutorial ini akan menunjukkan cara kerja COALESCE(), kapan menggunakannya, dan bagaimana menerapkannya melalui contoh praktis—semua hanya dalam beberapa baris SQL.

Apa Itu COALESCE() dalam SQL?

Fungsi COALESCE() dalam SQL mengembalikan nilai pertama yang bukan null dari daftar ekspresi. Jika semua nilainya null, maka akan mengembalikan null. Fungsi ini umum digunakan untuk menangani nilai yang hilang atau menggabungkan beberapa kolom menjadi satu keluaran cadangan.

Kapan Sebaiknya Menggunakan COALESCE()?

Fungsi ini berguna saat menggabungkan nilai dari beberapa kolom menjadi satu.

Misalnya, sebuah tabel bernama users memuat nilai work_email dan personal_email milik pengguna.

Dengan menggunakan fungsi COALESCE(), kita dapat membuat kolom bernama email, yang menampilkan work_email pengguna jika tidak null. Jika tidak, akan menampilkan personal_email.

user_id

work_email

personal_email

COALESCE() dari

work_email dan

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

Sintaks COALESCE()

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

Fungsi COALESCE() menerima setidaknya satu nilai (value_1). Fungsi ini akan mengembalikan nilai pertama yang bukan null dalam daftar, dari kiri ke kanan.

Misalnya, fungsi akan terlebih dahulu memeriksa apakah value_1 bernilai null. Jika tidak, maka akan mengembalikan value_1. Jika ya, fungsi memeriksa apakah value_2 bernilai null. Proses ini berlanjut hingga daftar selesai.

COALESCE() dapat digunakan dengan kolom, ekspresi, atau konstanta.

Contoh Praktis COALESCE()

Jalankan dan edit kode dari tutorial ini secara online.

Jalankan kode

Contoh 1: Mengganti null dengan konstanta

Pertimbangkan tabel countries yang berisi daftar negara dan hari nasionalnya. Beberapa nilai hari nasional bernilai null. COALESCE() mengisi nilai yang hilang pada national_day dengan string konstan 'Unknown'.

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

Hasilnya sebagai berikut:

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

Perhatikan bagaimana nilai null pada national_day diganti dengan konstanta Unknown.

Contoh 2: Memilih di antara dua kolom

Kita memiliki tabel bernama products. Tabel ini berisi nama produk dan deskripsinya. Beberapa deskripsi terlalu panjang (lebih dari 60 karakter). Dalam kasus tersebut, kita mengganti deskripsi dengan nama produk.

Kueri berikut menggunakan CASE untuk mengonversi deskripsi panjang menjadi NULL, lalu menggunakan COALESCE() untuk kembali menggunakan nama produk.

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

Hasilnya sebagai berikut:

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"

Perhatikan bagaimana kolom product_name_or_description menampilkan product_name jika description panjang. Jika tidak, kolom ini menampilkan description.

Contoh 3: Logika fallback dengan beberapa kolom

Kita dapat membawa contoh 2 selangkah lebih jauh. Asumsikan saat ini ada dua persyaratan:

  • Jika panjang description kurang dari 60, maka tampilkan description.
  • Jika tidak, periksa apakah panjang product_name kurang dari 20. Jika ya, tampilkan product_name.
  • Jika tidak, tampilkan product.
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

Hasilnya sebagai berikut:

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

Perhatikan bagaimana kolom product_name_or_description menampilkan product_name atau description bergantung pada panjang product_name atau description.

Mesin SQL yang Didukung

COALESCE() berfungsi di SQL Server (mulai 2008), Azure SQL Database, Azure SQL Data Warehouse, Parallel Data Warehouse, BigQuery, dan Amazon RedShift.

Fungsi SQL Terkait

Pemikiran Akhir

Fungsi COALESCE() adalah alat serbaguna untuk menangani nilai null dan menyederhanakan kueri SQL Anda. Baik saat Anda mengganti data yang hilang dengan nilai default atau menggabungkan beberapa kolom menjadi satu, COALESCE() membantu menjaga logika tetap bersih dan mudah dibaca.

Siap memperdalam keterampilan SQL Anda? Lihat kursus pemula yang ramah dan meningkatkan karier di DataCamp berikut ini:

FAQs

Apa yang terjadi jika semua nilai dalam COALESCE() adalah NULL?

Jika setiap argumen yang diberikan ke fungsi COALESCE() adalah NULL, maka fungsi akan mengembalikan NULL.

Apa perbedaan COALESCE() dengan ISNULL() atau IFNULL()?

  • ISNULL() (SQL Server) dan IFNULL() (MySQL, SQLite) hanya menerima dua argumen.
  • COALESCE() dapat menerima banyak argumen dan lebih standar di berbagai dialek SQL.

  • COALESCE() adalah bagian dari standar ANSI SQL, sedangkan ISNULL() dan IFNULL() bersifat spesifik basis data.

Bisakah saya menggunakan COALESCE() dengan ekspresi atau fungsi?

Ya, Anda dapat menggunakan nama kolom, literal, fungsi, atau ekspresi di dalam COALESCE().

COALESCE(LOWER(name), 'unknown')

Apakah ada biaya kinerja saat menggunakan COALESCE()?

Secara umum, tidak—COALESCE() efisien. Namun, jika Anda menggunakannya dengan ekspresi yang kompleks atau di dalam kueri besar, basis data mungkin mengevaluasi lebih banyak ekspresi daripada yang diperlukan, tergantung pada cara penulisannya.

Apakah COALESCE() berfungsi dengan tipe data yang berbeda?

Ya, tetapi semua argumen harus dapat dikonversi secara implisit ke tipe data umum. Jika tidak, mungkin terjadi kesalahan konversi tipe tergantung pada mesin SQL Anda.

Bisakah saya melakukan nesting fungsi COALESCE()?

Ya, Anda dapat melakukan nesting, meskipun jarang diperlukan karena COALESCE() sudah menangani banyak argumen:

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

Ini setara dengan:

COALESCE(col1, col2, 'default')
Topik

Kursus SQL Populer

Kursus

Pengantar SQL

2 Hr
1.6M
Pelajari cara membuat dan mengakses basis data relasional menggunakan SQL dalam waktu hanya dua jam.
Lihat DetailRight Arrow
Mulai Kursus
Lihat Lebih BanyakRight Arrow
Terkait

blogs

Tutorial Korelasi di R

Dapatkan pengenalan dasar-dasar korelasi di R: pelajari lebih lanjut tentang koefisien korelasi, matriks korelasi, plotting korelasi, dan sebagainya.
David Woods's photo

David Woods

13 mnt

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026

Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Dario Radečić's photo

Dario Radečić

15 mnt

blogs

Spaghetti Plot dan Jalur Badai

Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Hugo Bowne-Anderson's photo

Hugo Bowne-Anderson

13 mnt

blogs

12 Alternatif ChatGPT Terbaik yang Bisa Anda Coba pada 2026

Artikel ini menyajikan daftar alternatif ChatGPT yang akan meningkatkan produktivitas Anda.
Javier Canales Luna's photo

Javier Canales Luna

14 mnt

Lihat Lebih BanyakLihat Lebih Banyak