0Pricing
SQL Academy · Pelajaran

COALESCE dan NULLIF

Berikan nilai bawaan dan hindari pembagian dengan nol.

COALESCE dan NULLIF adalah pelajaran SQL Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar SQL Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus SQL Academy mencakup 4 pelajaran total.

Mengganti Nilai yang Hilang

Mendeteksi NULL adalah separuh perjuangan — sering kali Anda ingin menggantinya dengan nilai bawaan yang masuk akal. Fungsi COALESCE dalam SQL melakukan tepat hal itu.

Dan ketika Anda ingin membuat NULL dengan sengaja (misalnya untuk menghindari pembagian dengan nol), NULLIF adalah alatnya. Pelajaran ini membahas keduanya.

-- Show a placeholder when phone is missing
SELECT name, COALESCE(phone, 'no phone on file') AS phone
FROM customers;

Cara Kerja COALESCE

COALESCE menerima sejumlah argumen dan mengembalikan argumen pertama yang bukan NULL, dari kiri ke kanan.

Jika semua argumen bernilai NULL, hasilnya adalah NULL. Anggap saja ini sebagai "gunakan ini, atau itu, atau terakhir gunakan nilai cadangan ini".

SELECT
  COALESCE(NULL, NULL, 'third', 'fourth') AS a, -- 'third'
  COALESCE(NULL, 42)                       AS b, -- 42
  COALESCE(NULL, NULL)                     AS c; -- NULL

Merangkai Nilai Cadangan

Karena COALESCE menerima banyak argumen, Anda dapat membangun urutan preferensi.

Misalnya, prioritaskan nomor seluler, lalu nomor kantor, kemudian nomor rumah, dan akhirnya pesan teks tetap.

SELECT name,
  COALESCE(mobile, work_phone, home_phone, 'unreachable') AS best_contact
FROM contacts;

Nilai Bawaan dalam Perhitungan

NULL merambat dalam operasi aritmetika, sehingga satu nilai yang hilang dapat membuat seluruh perhitungan menjadi NULL. Bungkus masukan yang dapat bernilai NULL dengan COALESCE untuk menggantinya dengan nilai netral.

Di sini, diskon yang hilang dianggap sebagai 0.

-- Without COALESCE, a NULL discount makes total NULL
SELECT
  price - COALESCE(discount, 0) AS total
FROM line_items;

Aturan Tipe COALESCE

Semua argumen untuk COALESCE harus memiliki tipe yang kompatibel. PostgreSQL memilih tipe umum dan akan menghasilkan kesalahan jika tidak bisa.

Misalnya, Anda tidak dapat mencampur angka dan teks bebas tanpa melakukan konversi tipe — nilai cadangannya juga harus berupa angka.

-- OK: both integers
SELECT COALESCE(score, 0) FROM results;

-- Cast when mixing types
SELECT COALESCE(score::text, 'n/a') FROM results;

Mengenal NULLIF

NULLIF(a, b) secara konsep merupakan kebalikan dari COALESCE: fungsi ini mengembalikan NULL ketika a = b, dan selain itu mengembalikan a.

Ini adalah cara ringkas untuk mengubah nilai "penanda" tertentu menjadi NULL sungguhan.

SELECT
  NULLIF(5, 5)   AS a,  -- NULL (equal)
  NULLIF(5, 9)   AS b,  -- 5    (not equal)
  NULLIF('', '') AS c;  -- NULL (treat empty string as missing)

NULLIF untuk Pembagian dengan Nol

Penggunaan klasik NULLIF adalah menghindari kesalahan pembagian. Membagi dengan 0 memunculkan kesalahan, tetapi membagi dengan NULL cukup menghasilkan NULL.

Bungkus pembagi dengan NULLIF(divisor, 0) untuk mengubah kegagalan menjadi NULL yang aman.

-- If total_visits is 0, this would error.
-- NULLIF turns the divisor into NULL, giving a NULL ratio instead.
SELECT
  conversions / NULLIF(total_visits, 0) AS conversion_rate
FROM campaigns;

Menggabungkan NULLIF dan COALESCE

NULLIF dan COALESCE saling melengkapi dengan baik. Gunakan NULLIF untuk mengubah nilai penanda menjadi NULL, lalu COALESCE untuk memberikan nilai bawaan yang sesuai pada NULL tersebut.

Di sini, catatan berupa teks kosong menjadi teks tetap "—".

-- Treat '' as missing, then display a dash
SELECT
  COALESCE(NULLIF(note, ''), '—') AS display_note
FROM tickets;

Rasio Rata-rata yang Aman

Satukan semuanya untuk membuat kueri analitik yang andal: lindungi dari pembagian dengan nol menggunakan NULLIF, lalu tampilkan 0 sebagai pengganti NULL dengan COALESCE.

Kueri ini tidak pernah menghasilkan kesalahan dan selalu menampilkan angka yang rapi.

SELECT
  product_id,
  COALESCE(returns / NULLIF(orders, 0), 0) AS return_rate
FROM product_stats;

COALESCE dibandingkan dengan IS NULL

Keduanya menangani NULL, tetapi tujuannya berbeda:

  • IS NULL / IS NOT NULL — memeriksa nilai yang hilang dalam suatu kondisi.
  • COALESCE — mengganti nilai dalam keluaran.

Gunakan COALESCE saat membentuk keluaran, dan IS NULL saat memfilter.

-- Filter (IS NULL)
SELECT * FROM customers WHERE phone IS NULL;

-- Substitute (COALESCE)
SELECT COALESCE(phone, 'unknown') FROM customers;

Merangkai Semuanya

Referensi singkat untuk pelajaran ini:

  • COALESCE(a, b, c) → nilai pertama yang bukan NULL.
  • NULLIF(a, b) → NULL jika sama, jika tidak a.
  • Gunakan NULLIF(divisor, 0) untuk menghindari pembagian dengan nol.
  • Gunakan COALESCE untuk memberikan nilai bawaan dalam perhitungan dan keluaran.
SELECT
  COALESCE(nickname, full_name, 'guest')       AS display_name,
  revenue / NULLIF(orders, 0)                  AS avg_order_value
FROM accounts;

Pemeriksaan Singkat

Apa yang dikembalikan oleh NULLIF(amount, 0) ketika amount bernilai 0?

Ringkasan

Sekarang Anda dapat mengganti NULL dengan nilai bawaan menggunakan COALESCE (nilai pertama yang bukan NULL akan dipilih) dan membuat NULL dengan sengaja menggunakan NULLIF (NULL ketika dua nilai cocok).

Anda telah melihat pola untuk pembagian dengan nol dan cara merangkai kedua fungsi tersebut untuk menghasilkan keluaran yang aman dan rapi. Selanjutnya Anda akan mempelajari perilaku NULL di dalam COUNT, SUM, dan JOIN.

SELECT
  COALESCE(NULLIF(comment, ''), 'no comment') AS comment,
  total / NULLIF(qty, 0)                       AS unit_price
FROM invoices;

Pertanyaan yang Sering Diajukan

Apakah pelajaran “COALESCE dan NULLIF” gratis?

Ya — teks lengkap “COALESCE dan NULLIF” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus SQL Academy, upgrade ke CoddyKit PRO. Kursus SQL Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “COALESCE dan NULLIF”?

Berikan nilai bawaan dan hindari pembagian dengan nol. Kamu berlatih SQL Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai SQL Academy?

Tidak diperlukan pengalaman sebelumnya. SQL Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.

Berapa lama pelajaran “COALESCE dan NULLIF” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran SQL Academy ini?

Ya. Setiap pelajaran SQL Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Makna Sebenarnya NULL
  2. IS NULL dan IS NOT NULL
  3. COALESCE dan NULLIF
  4. NULL dalam Agregat dan JOIN
← Kembali ke SQL Academy