Panduan Fungsi IFNULL MySQL: Mengganti Nilai NULL (Alternatif NVL Oracle)

目次

1. Pendahuluan

Saat bekerja dengan basis data, menangani nilai NULL adalah poin penting.
Khususnya, tidak jarang orang yang terbiasa dengan fungsi NVL milik Oracle menyadari bahwa NVL tidak tersedia saat migrasi ke MySQL.

Di MySQL, Anda dapat menangani nilai NULL dengan menggunakan fungsi IFNULL alih‑alih NVL.
Artikel ini menjelaskan cara bekerja dengan nilai NULL di MySQL secara detail, mencakup cara menggunakan IFNULL dan bagaimana ia berbeda dari fungsi penanganan NULL lainnya.

1.1 Apa itu nilai NULL?

Di basis data, NULL berarti “tidak ada nilai yang ditetapkan”.
Karena ini berbeda dari “0” atau “string kosong”, kegagalan dalam menanganinya dengan tepat dapat menyebabkan kesalahan tak terduga atau hasil kueri yang tidak tepat.

Sebagai contoh, anggap Anda memiliki data seperti berikut.

IDNameAge
1Yamada25
2SatoNULL
3Suzuki30

Pada data di atas, usia untuk ID “2” (Sato) adalah NULL.
Jika Anda menjalankan perhitungan apa adanya, Anda mungkin mendapatkan kesalahan atau hasil yang tidak diinginkan.

1.2 Bagaimana MySQL menangani nilai NULL

2. Apa itu fungsi IFNULL?

MySQL menyediakan fungsi IFNULL sebagai fungsi untuk mengganti nilai NULL dengan nilai lain.
Fungsinya mirip dengan fungsi NVL milik Oracle.

Dengan menangani nilai NULL secara tepat, Anda dapat mencegah masalah perhitungan yang disebabkan oleh data yang hilang dan membangun kueri SQL yang lebih stabil.
Mari kita lihat lebih dekat penggunaan dasar IFNULL.

2.1 Sintaks dasar IFNULL

Sintaks dasar fungsi IFNULL adalah sebagai berikut.

IFNULL(expression, fallback_value)
  • expression : Kolom atau nilai yang akan diperiksa apakah NULL
  • fallback_value : Nilai yang dikembalikan ketika ekspresi bernilai NULL (jika tidak NULL, ekspresi dikembalikan apa adanya)

Sebagai contoh, pertimbangkan pernyataan SQL berikut.

SELECT IFNULL(NULL, 'Fallback value');

Dalam kasus ini, karena NULL ditentukan, hasilnya menjadi 'Fallback value'.

Result
Fallback value

Sebaliknya, jika Anda menentukan nilai yang bukan NULL, nilai tersebut dikembalikan apa adanya.

SELECT IFNULL('Hello', 'Fallback value');
Result
Hello

2.2 Karakteristik utama IFNULL

Fungsi IFNULL memiliki karakteristik berikut.

  1. Dapat mengubah nilai NULL menjadi nilai tertentu
  • Anda dapat menetapkan nilai default alternatif untuk kolom yang mungkin berisi NULL.
  1. Menggunakan sintaks yang sederhana
  • Lebih mudah ditulis dibandingkan menggunakan ekspresi CASE.
  1. Perlu memperhatikan tipe data
  • Disarankan agar argumen IFNULL memiliki tipe data yang sama.

Sebagai contoh, SQL berikut dapat menyebabkan kesalahan.

SELECT IFNULL(100, 'Error');

Alasannya: tipe numerik (100) dan tipe string (‘Error’) dicampur.
Dalam kasus ini, nilai fallback juga harus berupa numerik.

SELECT IFNULL(100, 0);

2.3 Kapan Anda harus menggunakan IFNULL

Berikut beberapa situasi praktis di mana IFNULL berguna.

  1. Menetapkan nilai default untuk NULL
  • Misalnya, jika bonus seorang karyawan bernilai NULL, setel menjadi 0.
    SELECT name, IFNULL(bonus, 0) AS bonus
    FROM employees;
    
  1. Menghindari perhitungan yang melibatkan NULL
  • Jika Anda menghitung dengan NULL apa adanya, hasilnya juga akan menjadi NULL.
  • Menggunakan IFNULL untuk menghindari NULL memungkinkan perhitungan sesuai harapan.
    SELECT name, salary, IFNULL(bonus, 0) AS bonus, salary + IFNULL(bonus, 0) AS total_income
    FROM employees;
    
  1. Menangani NULL secara tepat dalam laporan dan agregasi
  • Jika NULL hadir selama analisis, laporan yang dihasilkan dapat menjadi tidak akurat.
  • Dengan mengganti NULL dengan nilai tertentu menggunakan IFNULL, Anda dapat memproses data secara konsisten.

3. Contoh praktis fungsi IFNULL

Pada bagian sebelumnya, kami menjelaskan dasar‑dasar fungsi IFNULL.
Pada bagian ini, kami akan memperkenalkan contoh konkret penggunaan fungsi tersebut dengan data nyata.

3.1 Ganti nilai NULL dengan nilai default

Jika sebuah tabel berisi nilai NULL, hal itu dapat menyebabkan perilaku yang tidak diinginkan.
Untuk mengatasinya, Anda dapat menggunakan IFNULL untuk mengganti NULL dengan nilai default.

Contoh: Jika bonus karyawan adalah NULL, atur nilai default menjadi 0

SELECT name, IFNULL(bonus, 0) AS bonus
FROM employees;

Data sebelum eksekusi

namebonus
Sato5000
SuzukiNULL
Takahashi8000

Setelah menerapkan IFNULL

namebonus
Sato5000
Suzuki0
Takahashi8000

Mengganti NULL dengan 0 membuat agregasi dan pemrosesan terkait menjadi lebih lancar.

3.2 Hindari perhitungan yang mencakup NULL

Di MySQL, hasil dari perhitungan yang mencakup NULL menjadi NULL.
Oleh karena itu, Anda perlu menggunakan IFNULL untuk menghindari NULL.

Contoh: Hitung total gaji dan bonus

SELECT name, salary, IFNULL(bonus, 0) AS bonus, salary + IFNULL(bonus, 0) AS total_income
FROM employees;

Data sebelum eksekusi

namesalarybonus
Sato3000005000
Suzuki280000NULL
Takahashi3200008000

Setelah menerapkan IFNULL

namesalarybonustotal_income
Sato3000005000305000
Suzuki2800000280000
Takahashi3200008000328000

Jika bonus adalah NULL, total (gaji + bonus) juga menjadi NULL,
tetapi dengan menerapkan IFNULL, MySQL memperlakukan NULL sebagai 0 dan menghitung dengan benar.

3.3 Ganti NULL dengan string lain

Anda dapat mengatur string default tidak hanya untuk angka, tetapi juga ketika nilai adalah NULL.

Contoh: Tampilkan “Belum terdaftar” untuk pengguna tanpa alamat email

SELECT id, name, IFNULL(email, 'Not registered') AS email
FROM users;

Data sebelum eksekusi

idnameemail
1Satosatou@example.com
2SuzukiNULL
3Takahashitakahashi@example.com

Setelah menerapkan IFNULL

idnameemail
1Satosatou@example.com
2SuzukiNot registered
3Takahashitakahashi@example.com

Jika dibiarkan sebagai NULL, kolom akan tampak kosong, tetapi IFNULL membuatnya eksplisit dengan “Belum terdaftar.”

3.4 Gunakan IFNULL dalam klausa WHERE

Anda dapat menggunakan IFNULL dalam klausa WHERE untuk memfilter berdasarkan kondisi yang mencakup nilai NULL.

Contoh: Ambil hanya pengguna dengan nilai NULL

SELECT *
FROM users
WHERE IFNULL(email, '') = '';

SQL ini memperlakukan email sebagai '' (string kosong) ketika itu adalah NULL, dan mengambil hanya pengguna yang emailnya NULL.

3.5 Letakkan nilai NULL di akhir pada ORDER BY

Biasanya, ketika menggunakan ORDER BY, nilai NULL mungkin muncul pertama, tetapi Anda dapat menggunakan IFNULL untuk memindahkannya ke akhir.

Contoh: Letakkan baris dengan nilai NULL di akhir

SELECT name, salary
FROM employees
ORDER BY IFNULL(salary, 0) ASC;

4. Perbedaan antara IFNULL dan COALESCE

MySQL menyediakan beberapa fungsi untuk menangani nilai NULL, dan IFNULL dan COALESCE sering dibandingkan.
Keduanya mengganti nilai NULL dengan alternatif, tetapi penggunaan dan perilakunya berbeda.

Di bagian ini, kami menjelaskan perbedaan antara IFNULL dan COALESCE serta cara memilih yang tepat.

4.1 Apa itu fungsi COALESCE?

Fungsi COALESCE mengembalikan nilai non-NULL pertama di antara beberapa argumen.
Dengan kata lain, sementara IFNULL memilih nilai non-NULL antara dua nilai,
COALESCE berbeda dengan memilih nilai non-NULL pertama dari beberapa kandidat.

Sintaks

COALESCE(expr1, expr2, ... , exprN)
  • Dievaluasi dari kiri ke kanan dan mengembalikan nilai non-NULL pertama
  • Mengembalikan NULL jika semua argumen adalah NULL

Contoh: Mengganti NULL menggunakan COALESCE

SELECT name, COALESCE(phone, email, 'Not registered') AS contact_info
FROM customers;

Dalam kasus ini, nilai ditentukan sebagai berikut.

  1. Jika phone tidak NULL, kembalikan phone .
  2. Jika phone adalah NULL dan email tidak NULL, kembalikan email .
  3. Jika keduanya phone dan email adalah NULL, kembalikan 'Belum terdaftar' .

4.2 Perbedaan antara IFNULL dan COALESCE

Comparison itemIFNULLCOALESCE
NULL handlingReturns the fallback value if one expression is NULLEvaluates multiple expressions and returns the first non-NULL value
Number of argumentsOnly 22 or more (multiple allowed)
Use caseSimple NULL replacementNULL handling with priority order
Execution speedFast (compares only 2 values)Slightly slower (evaluates multiple values in order)

4.3 Contoh praktis dari IFNULL dan COALESCE

Contoh 1: Penggantian NULL sederhana

Dengan IFNULL, Anda dapat memilih nilai non-NULL antara dua nilai.

SELECT name, IFNULL(phone, 'Not registered') AS contact_info
FROM customers;

Hasil

namephonecontact_info
Sato080-1234-5678080-1234-5678
SuzukiNULLNot registered

Contoh 2: Lebih memilih nilai non-NULL pertama yang tersedia

Dengan COALESCE, Anda dapat mengambil nilai non-NULL pertama.

SELECT name, COALESCE(phone, email, 'Not registered') AS contact_info
FROM customers;

Hasil

namephoneemailcontact_info
Sato080-1234-5678satou@example.com080-1234-5678
SuzukiNULLsuzuki@example.comsuzuki@example.com
TakahashiNULLNULLNot registered
  • Jika phone tidak NULL, kembalikan phone
  • Jika phone NULL dan email tidak NULL, kembalikan email
  • Jika keduanya phone dan email NULL, kembalikan 'Not registered'

4.4 Cara memilih antara IFNULL dan COALESCE

✔ Kapan Anda harus menggunakan IFNULL

Ketika Anda ingin penggantian sederhana NULL dengan nilai default
Ketika dua argumen sudah cukup (misalnya, konversi NULL ke 0)

✔ Kapan Anda harus menggunakan COALESCE

Ketika Anda ingin menemukan nilai non-NULL pertama (misalnya, phone → email → “Not registered”)
Ketika Anda perlu mengevaluasi tiga atau lebih nilai

4.5 Perbandingan performa antara IFNULL dan COALESCE

Secara umum, IFNULL lebih cepat daripada COALESCE.
Ini karena IFNULL mengevaluasi hanya dua nilai, sementara COALESCE mengevaluasi beberapa nilai secara berurutan.

Tes Performa

Saat menerapkan IFNULL dan COALESCE pada 1 juta baris, Anda mungkin melihat hasil seperti berikut.

FunctionExecution time (seconds)
IFNULL0.02
COALESCE0.05

Dengan volume data besar, IFNULL bisa sedikit lebih cepat.
➡ Namun, jika Anda hanya membutuhkan satu cadangan, gunakan IFNULL; jika Anda ingin beberapa kandidat, gunakan COALESCE.

5. Fungsi penanganan NULL di database selain MySQL

MySQL menyediakan fungsi IFNULL untuk menangani nilai NULL, tetapi sistem manajemen database (DBMS) lainnya menggunakan fungsi yang berbeda.
Di database utama seperti Oracle, PostgreSQL, dan SQL Server, umum menggunakan fungsi yang berbeda dari MySQL untuk penanganan NULL.

Bagian ini menjelaskan bagaimana nilai NULL ditangani di database selain MySQL.

5.1 Penanganan NULL di Oracle: fungsi NVL

Di Oracle, fungsi NVL disediakan sebagai ekuivalen dari IFNULL milik MySQL.
Fungsi NVL mengembalikan nilai lain ketika nilai yang ditentukan adalah NULL.

Sintaks

NVL(expression, fallback_value)
  • expression : Kolom atau nilai yang akan diperiksa untuk NULL
  • fallback_value : Nilai yang akan dikembalikan ketika NULL (jika tidak NULL, expression dikembalikan apa adanya)

Contoh

SELECT name, NVL(salary, 0) AS salary
FROM employees;

Hasil

namesalary
Sato5000
Suzuki0
Takahashi8000

Perilaku NVL hampir sama dengan IFNULL milik MySQL, jadi di Oracle Anda bisa langsung menggunakan NVL.

5.2 Penanganan NULL di PostgreSQL dan SQL Server: fungsi COALESCE

Di PostgreSQL dan SQL Server, fungsi COALESCE digunakan untuk mengganti nilai NULL dengan alternatif.
Fungsi ini bisa mengembalikan nilai non-NULL pertama di antara beberapa kandidat.

Sintaks

COALESCE(expr1, expr2, ..., exprN)
  • Mengevaluasi dari kiri ke kanan dan mengembalikan nilai non-NULL pertama
  • Mengembalikan NULL jika semua argumen NULL

Contoh

SELECT name, COALESCE(phone, email, 'Not registered') AS contact_info
FROM customers;

Hasil

namephoneemailcontact_info
Sato080-1234-5678satou@example.com080-1234-5678
SuzukiNULLsuzuki@example.comsuzuki@example.com
TakahashiNULLNULLNot registered

Seperti yang ditunjukkan di atas, di PostgreSQL dan SQL Server, menggunakan COALESCE memungkinkan penanganan NULL yang lebih fleksibel daripada IFNULL milik MySQL.

5.3 Perbandingan fungsi penanganan NULL di berbagai database

DatabaseNULL-handling functionRole
MySQLIFNULL(expression, fallback_value)Convert NULL to a fallback value
OracleNVL(expression, fallback_value)Convert NULL to a fallback value (equivalent to IFNULL)
PostgreSQL / SQL ServerCOALESCE(expr1, expr2, ...)Return the first non-NULL value
  • Penanganan NULL sederhanaIFNULL (MySQL) atau NVL (Oracle)
  • Pilih nilai terbaik dari beberapa kandidatCOALESCE (PostgreSQL, SQL Server)

5.4 Catatan saat migrasi antar DBMS yang berbeda

Saat memigrasi sistem antar database yang berbeda, Anda perlu memperhatikan perbedaan dalam fungsi penanganan NULL.
Khususnya, saat memigrasi dari Oracle ke MySQL, Anda harus menulis ulang NVL menjadi IFNULL.

Contoh penulisan ulang saat migrasi

  • Oracle (NVL)
    SELECT NVL(salary, 0) AS salary FROM employees;
    
  • MySQL (IFNULL)
    SELECT IFNULL(salary, 0) AS salary FROM employees;
    
  • PostgreSQL / SQL Server (COALESCE)
    SELECT COALESCE(salary, 0) AS salary FROM employees;
    

Also, because COALESCE can accept multiple arguments, it is more flexible than Oracle’s NVL or MySQL’s IFNULL.
During migration, it’s important to choose the correct function for the target database.

Selama migrasi, penting untuk memilih fungsi yang tepat untuk basis data target.

6. Frequently Asked Questions (FAQ)

6. Pertanyaan yang Sering Diajukan (FAQ)

Questions about MySQL’s IFNULL function and NULL handling are important for developers and database administrators.
This section summarizes common questions about IFNULL.

Pertanyaan tentang fungsi IFNULL MySQL dan penanganan NULL penting bagi pengembang dan administrator basis data.
Bagian ini merangkum pertanyaan umum tentang IFNULL.

Q1. Are the IFNULL function and the NVL function the same?

Q1. Apakah fungsi IFNULL dan fungsi NVL sama?

They provide almost the same functionality, but the function name differs depending on the database.Mereka menyediakan hampir fungsi yang sama, tetapi nama fungsi berbeda tergantung pada basis data.

DatabaseNULL-handling function
MySQLIFNULL(expression, fallback_value)
OracleNVL(expression, fallback_value)
PostgreSQL / SQL ServerCOALESCE(expr1, expr2, ...)

In MySQL, use IFNULL; in Oracle, use NVL to convert NULL values to a fallback value. Di MySQL, gunakan IFNULL; di Oracle, gunakan NVL untuk mengubah nilai NULL menjadi nilai cadangan.

Q2. What is the difference between IFNULL and COALESCE?

Q2. Apa perbedaan antara IFNULL dan COALESCE?

IFNULL returns the non-NULL value between two arguments, while
COALESCE returns the first non-NULL value among multiple arguments. ➡ IFNULL mengembalikan nilai non-NULL di antara dua argumen, sementara
COALESCE mengembalikan nilai non-NULL pertama di antara banyak argumen.

FunctionFeature
IFNULL(a, b)If a is NULL, return b (only two arguments)
COALESCE(a, b, c, ...)Evaluates left to right and returns the first non-NULL value

Examples

Contoh

SELECT IFNULL(NULL, 'Fallback value'); -- Result: 'Fallback value'
SELECT COALESCE(NULL, NULL, 'First non-NULL value'); -- Result: 'First non-NULL value'

✔ When you should use IFNULL
✅ Return a specific default value when NULL (e.g., if NULL then 0)
✅ When you only compare two values ✔ Kapan Anda harus menggunakan IFNULL
✅ Mengembalikan nilai default tertentu saat NULL (misalnya, jika NULL maka 0)
✅ Saat Anda hanya membandingkan dua nilai

✔ When you should use COALESCE
✅ Retrieve the first non-NULL value (e.g., phone → email → default value)
✅ When you need to evaluate three or more values ✔ Kapan Anda harus menggunakan COALESCE
✅ Mengambil nilai non-NULL pertama (misalnya, telepon → email → nilai default)
✅ Saat Anda perlu mengevaluasi tiga nilai atau lebih

Q3. Can IFNULL be used with data types other than numbers?

Q3. Bisakah IFNULL digunakan dengan tipe data selain angka?

Yes. IFNULL can be used with strings, dates, numbers, and more.Ya. IFNULL dapat digunakan dengan string, tanggal, angka, dan lainnya.

Example 1: Using strings

Contoh 1: Menggunakan string

SELECT name, IFNULL(email, 'Not registered') AS email
FROM users;

Example 2: Using dates

Contoh 2: Menggunakan tanggal

SELECT name, IFNULL(last_login, '2000-01-01') AS last_login
FROM users;

However, mixing different data types (such as numbers and strings) can cause errors, so be careful. Namun, mencampur tipe data yang berbeda (seperti angka dan string) dapat menyebabkan kesalahan, jadi berhati-hatilah.

SELECT IFNULL(100, 'Error'); -- May cause an error due to different data types

Q4. Does using IFNULL reduce performance?

Q4. Apakah penggunaan IFNULL mengurangi kinerja?

In general, the performance impact is minimal, but it can matter when processing large volumes of data.Secara umum, dampak kinerja minimal, tetapi dapat berpengaruh saat memproses volume data yang besar.

  • IFNULL is usually fast because it only checks two values
  • However, heavy use of IFNULL on very large datasets (millions of rows) can affect index optimization in some cases
  • IFNULL biasanya cepat karena hanya memeriksa dua nilai
  • Namun, penggunaan IFNULL secara intensif pada dataset yang sangat besar (jutaan baris) dapat mempengaruhi optimasi indeks dalam beberapa kasus

🔹 Performance optimization tips 🔹 Tips optimasi kinerja

  1. Set indexes appropriately
  2. Atur indeks dengan tepat
  • Queries like IFNULL(column, 0) = 100 may prevent indexes from being used in some cases
  • One approach is to store values with an appropriate default instead of NULL from the beginning
  • Kuery seperti IFNULL(column, 0) = 100 dapat mencegah penggunaan indeks dalam beberapa kasus
  • Salah satu pendekatan adalah menyimpan nilai dengan default yang sesuai alih-alih NULL sejak awal
  1. IFNULL is lighter than COALESCE
  2. IFNULL lebih ringan dibandingkan COALESCE
  • Because COALESCE evaluates multiple values in order, IFNULL can be faster in many cases
  • Karena COALESCE mengevaluasi banyak nilai secara berurutan, IFNULL dapat lebih cepat dalam banyak kasus

Q5. Can you use CASE instead of IFNULL?

Q5. Bisakah Anda menggunakan CASE alih-alih IFNULL?

Yes. You can achieve similar behavior with CASE, but it becomes more verbose.Ya. Anda dapat mencapai perilaku serupa dengan CASE, tetapi menjadi lebih verbose.

With IFNULL

Dengan IFNULL

SELECT name, IFNULL(salary, 0) AS salary
FROM employees;

With CASE

Dengan CASE

SELECT name,
  CASE WHEN salary IS NULL THEN 0 ELSE salary END AS salary
FROM employees;

IFNULL is concise and easy to use
CASE supports more flexible conditions (e.g., you can include non-NULL conditions as well) ✔ IFNULL ringkas dan mudah digunakan
CASE mendukung kondisi yang lebih fleksibel (misalnya, Anda dapat menyertakan kondisi non-NULL juga)

Q6. Can IFNULL be used in a WHERE clause?

Q6. Bisakah IFNULL digunakan dalam klausa WHERE?

Yes. IFNULL can be used inside a WHERE clause.Ya. IFNULL dapat digunakan di dalam klausa WHERE.

Example: Replace NULL with a specific value when searching

Contoh: Ganti NULL dengan nilai tertentu saat pencarian

SELECT * FROM users WHERE IFNULL(status, 'Not set') = 'Not set';

This retrieves records where status is NULL. Ini mengambil catatan di mana status adalah NULL.

Summary

Ringkasan

  • IFNULL and NVL have almost the same functionality, but differ by DBMS
  • IFNULL evaluates 2 values; COALESCE evaluates multiple values
  • Works with strings, dates, numbers, and more
  • For large datasets, consider index optimization
  • You can use CASE instead of IFNULL
  • IFNULL can also be used in WHERE clauses

  • IFNULL dan NVL memiliki hampir fungsi yang sama, tetapi berbeda tergantung DBMS

  • IFNULL mengevaluasi 2 nilai; COALESCE mengevaluasi banyak nilai
  • Berfungsi dengan string, tanggal, angka, dan lainnya
  • Untuk dataset besar, pertimbangkan optimasi indeks
  • Anda dapat menggunakan CASE alih-alih IFNULL
  • IFNULL juga dapat digunakan dalam klausa WHERE

7. Conclusion

Dalam artikel ini, kami membahas fungsi IFNULL MySQL secara detail, termasuk cara menangani nilai NULL, perbedaannya dengan fungsi lain, dan contoh praktis.
Akhirnya, mari kita tinjau singkat apa yang telah kami bahas.

7.1 What is the IFNULL function?

  • IFNULL returns a fallback value when the specified value is NULL
    IFNULL mengembalikan nilai cadangan ketika nilai yang ditentukan adalah NULL
  • Syntax :
    IFNULL(expression, fallback_value)
    
  • By avoiding NULL, you can prevent calculation errors and missing-data issues
    Dengan menghindari NULL, Anda dapat mencegah kesalahan perhitungan dan masalah data yang hilang

7.2 Practical examples of IFNULL

  • Replace NULL with a default value (0 or a specific string)
    Ganti NULL dengan nilai default (0 atau string tertentu)
    SELECT name, IFNULL(bonus, 0) AS bonus FROM employees;
    
  • Correctly handle calculations that include NULL
    Tangani perhitungan yang mencakup NULL dengan benar
    SELECT name, salary + IFNULL(bonus, 0) AS total_income FROM employees;
    
  • Convert NULL to an appropriate string such as “Not registered”
    Ubah NULL menjadi string yang sesuai seperti “Tidak terdaftar”
    SELECT id, IFNULL(email, 'Not registered') AS email FROM users;
    
  • Use in WHERE clauses to filter NULL values
    Gunakan dalam klausa WHERE untuk menyaring nilai NULL
    SELECT * FROM users WHERE IFNULL(status, 'Not set') = 'Not set';
    

7.3 Differences between IFNULL and COALESCE

  • IFNULL returns the non-NULL value between two arguments
    IFNULL mengembalikan nilai non-NULL di antara dua argumen
  • COALESCE returns the first non-NULL value among multiple arguments
    COALESCE mengembalikan nilai non-NULL pertama di antara beberapa argumen
  • How to choose
    Cara memilih
  • Simple NULL handling → IFNULL
    Penanganan NULL sederhana → IFNULL
  • Select the first non-NULL value → COALESCE
    Pilih nilai non-NULL pertama → COALESCE

7.4 NULL handling in other DBMS

DatabaseNULL-handling function
MySQLIFNULL(expression, fallback_value)
OracleNVL(expression, fallback_value)
PostgreSQL / SQL ServerCOALESCE(expr1, expr2, ...)
  • Oracle’s NVL is almost the same as MySQL’s IFNULL
    NVL Oracle hampir sama dengan IFNULL MySQL
  • PostgreSQL and SQL Server commonly use COALESCE
    PostgreSQL dan SQL Server umumnya menggunakan COALESCE
  • During migration, you must replace functions appropriately
    Selama migrasi, Anda harus mengganti fungsi secara tepat

7.5 Performance and cautions for IFNULL

  • IFNULL is lighter than COALESCE
    IFNULL lebih ringan daripada COALESCE
  • With large datasets, performance may degrade if index optimization is affected
    Dengan dataset besar, kinerja dapat menurun jika optimasi indeks terpengaruh
  • Be careful to keep data types consistent (don’t mix numeric and string types)
    Hati-hati untuk menjaga konsistensi tipe data (jangan mencampur tipe numerik dan string)

7.6 Final takeaways

  • In MySQL, use IFNULL to handle NULL properly
    Di MySQL, gunakan IFNULL untuk menangani NULL dengan tepat
  • You can process data without being impacted by NULL
    Anda dapat memproses data tanpa terpengaruh oleh NULL
  • Understand the differences from COALESCE and NVL and use the right function
    Pahami perbedaan dengan COALESCE dan NVL serta gunakan fungsi yang tepat
  • When migrating between databases, pay attention to differences in NULL-handling functions
    Saat migrasi antar basis data, perhatikan perbedaan fungsi penanganan NULL