0Pricing
SQL Academy · Pelajaran

IS NULL, IS NOT NULL, dan COALESCE

Deteksi NULL dengan IS NULL, gantikan dengan COALESCE / NULLIF, dan rancang kueri yang tetap berjalan baik saat data tidak lengkap.

IS NULL, IS NOT NULL, dan COALESCE adalah pelajaran SQL Academy gratis di CoddyKit. Ini adalah pelajaran 4 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.

Menguji NULL

Gunakan IS NULL dan IS NOT NULL — jangan pernah menggunakan = NULL:

SELECT * FROM users WHERE deleted_at IS NULL;
SELECT * FROM users WHERE deleted_at IS NOT NULL;

Mengapa = NULL Gagal Secara Diam-Diam

Membandingkan apa pun dengan NULL menghasilkan NULL (tidak diketahui). Baris tersebut dibuang — tetapi Anda tidak mendapatkan error, sehingga bug tersebut dapat lolos ke produksi:

SELECT * FROM users WHERE deleted_at = NULL;
-- → returns 0 rows, always

COALESCE: NULL Pertama yang Bukan NULL

COALESCE menerima sejumlah argumen dan mengembalikan argumen pertama yang bukan NULL:

SELECT id,
       COALESCE(nickname, full_name, email, 'Anonymous') AS display_name
FROM users;

COALESCE dalam WHERE

Gunakan COALESCE untuk mengubah NULL menjadi nilai bawaan yang dapat diurutkan atau dibandingkan:

-- Treat NULL last_login_at as the epoch:
SELECT * FROM users
ORDER BY COALESCE(last_login_at, '1970-01-01') DESC;

NULLIF: Kebalikannya

NULLIF(a, b) mengembalikan NULL ketika a = b, dan a jika tidak:

-- Treat 0 as missing so AVG ignores it:
SELECT AVG(NULLIF(price, 0)) FROM products;

-- Convert empty string to NULL on insert:
INSERT INTO contacts (phone) VALUES (NULLIF(:phone, ''));

CASE untuk Nilai Bawaan Bersyarat

CASE adalah alternatif serbaguna ketika COALESCE tidak cukup fleksibel:

SELECT id,
  CASE
    WHEN status IS NULL OR status = '' THEN 'unknown'
    WHEN status = 'A' THEN 'active'
    ELSE status
  END AS status_label
FROM users;

NULL dalam CHECK dan Batasan

Batasan CHECK lolos ketika kondisinya NULL. Nyatakan secara eksplisit jika Anda perlu melarang NULL:

CREATE TABLE prices (
  amount NUMERIC(10,2),
  CHECK (amount > 0)        -- amount = NULL passes!
);

-- Better:
CREATE TABLE prices2 (
  amount NUMERIC(10,2) NOT NULL CHECK (amount > 0)
);

NULL dalam JOIN ON

Pasangan baris yang kunci gabungnya NULL tidak pernah cocok — NULL = NULL adalah NULL. Gunakan IS NOT DISTINCT FROM jika Anda ingin NULL dianggap sama dengan NULL:

SELECT * FROM a JOIN b ON a.key IS NOT DISTINCT FROM b.key;

NULL dan UNIQUE

SQL standar memperlakukan NULL sebagai nilai berbeda dalam batasan UNIQUE — Anda dapat memiliki banyak baris NULL:

CREATE TABLE invites (
  id BIGSERIAL PRIMARY KEY,
  email VARCHAR(255) UNIQUE
);
INSERT INTO invites (email) VALUES (NULL), (NULL); -- both succeed!

Ringkasan NULL dan Fungsi Agregat

Fungsi agregat (kecuali COUNT(*)) melewati NULL.

SELECT COUNT(*)            FROM users;  -- all rows
SELECT COUNT(email)        FROM users;  -- rows where email IS NOT NULL
SELECT COUNT(DISTINCT id)  FROM users;

Selalu Nyatakan NOT NULL Jika Memungkinkan

NOT NULL adalah jaminan kebenaran yang paling sederhana dan kuat. Tambahkan ke setiap kolom yang tidak boleh kosong.

Ringkasan

Penanganan NULL adalah sumber terbesar bug SQL yang sulit dideteksi.

  • Uji dengan IS NULL
  • Ganti dengan COALESCE
  • Ubah nilai penanda menjadi NULL dengan NULLIF
  • Gunakan NOT NULL sebagai bawaan

Pemeriksaan Singkat

Ekspresi mana yang mengembalikan email jika tidak NULL, dan literal 'no-email' jika NULL?

Pertanyaan yang Sering Diajukan

Apakah pelajaran “IS NULL, IS NOT NULL, dan COALESCE” gratis?

Ya — teks lengkap “IS NULL, IS NOT NULL, dan COALESCE” 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 “IS NULL, IS NOT NULL, dan COALESCE”?

Deteksi NULL dengan IS NULL, gantikan dengan COALESCE / NULLIF, dan rancang kueri yang tetap berjalan baik saat data tidak lengkap. 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 4 dari 4.

Berapa lama pelajaran “IS NULL, IS NOT NULL, dan COALESCE” 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. Pola LIKE dan Karakter Wildcard
  2. IN dan NOT IN untuk Himpunan
  3. BETWEEN untuk Rentang
  4. IS NULL, IS NOT NULL, dan COALESCE
← Kembali ke SQL Academy