Perbedaan utama antara keduanya adalah IFNULL
fungsi mengambil dua argumen dan mengembalikan yang pertama jika bukan NULL
atau yang kedua jika yang pertama adalah NULL
.
COALESCE
fungsi dapat mengambil dua atau lebih parameter dan mengembalikan parameter non-NULL pertama, atau NULL
jika semua parameter nol, misalnya:
SELECT IFNULL('some value', 'some other value');
-> returns 'some value'
SELECT IFNULL(NULL,'some other value');
-> returns 'some other value'
SELECT COALESCE(NULL, 'some other value');
-> returns 'some other value' - equivalent of the IFNULL function
SELECT COALESCE(NULL, 'some value', 'some other value');
-> returns 'some value'
SELECT COALESCE(NULL, NULL, NULL, NULL, 'first non-null value');
-> returns 'first non-null value'
PERBARUI: MSSQL melakukan pemeriksaan tipe dan parameter yang lebih ketat. Selanjutnya, tidak memiliki IFNULL
fungsi tetapi sebagai gantinya ISNULL
fungsi, yang perlu mengetahui jenis argumen. Oleh karena itu:
SELECT ISNULL(NULL, NULL);
-> results in an error
SELECT ISNULL(NULL, CAST(NULL as VARCHAR));
-> returns NULL
Juga COALESCE
fungsi di MSSQL membutuhkan setidaknya satu parameter untuk menjadi non-null, oleh karena itu:
SELECT COALESCE(NULL, NULL, NULL, NULL, NULL);
-> results in an error
SELECT COALESCE(NULL, NULL, NULL, NULL, 'first non-null value');
-> returns 'first non-null value'