Saat menanyakan database SQL Server, mungkin ada saat di mana Anda tidak ingin nilai nol dikembalikan dalam kumpulan hasil Anda. Dan mungkin ada saat-saat di mana Anda ingin mereka kembali. Tetapi mungkin ada saat-saat di mana Anda menginginkannya dikembalikan, tetapi dengan nilai yang berbeda.
Itulah ISNULL()
fungsinya untuk.
ISNULL()
adalah fungsi T-SQL yang memungkinkan Anda mengganti NULL
dengan nilai tertentu pilihan Anda.
Contoh
Berikut kueri dasar yang mengembalikan kumpulan hasil kecil:
SELECT TaskCode AS Result FROM Tasks;
Hasil:
Result ------ cat123 null null pnt456 rof789 null
Kita dapat melihat bahwa ada tiga baris yang berisi nilai null.
Jika kita tidak ingin nilai null muncul seperti itu, kita bisa menggunakan ISNULL()
untuk mengganti null
dengan nilai yang berbeda.
Seperti ini:
SELECT ISNULL(TaskCode, 'N/A') AS Result FROM Tasks;
Hasil:
Result ------ cat123 N/A N/A pnt456 rof789 N/A
Kita juga bisa menggantinya dengan string kosong:
SELECT ISNULL(TaskCode, '') AS Result FROM Tasks;
Hasil:
Result ------ cat123 pnt456 rof789
Perhatikan bahwa ISNULL()
mensyaratkan bahwa argumen kedua adalah tipe yang dapat secara implisit dikonversi ke tipe data argumen pertama. Itu karena mengembalikan hasil menggunakan tipe data argumen pertama.
Mencegah Baris Null agar Tidak Menghilang
Ada beberapa fungsi T-SQL di mana nilai nol dihilangkan dari kumpulan hasil. Dalam kasus seperti itu, nilai nol tidak akan dikembalikan sama sekali.
Meskipun ini mungkin merupakan hasil yang diinginkan dalam beberapa kasus, dalam kasus lain ini bisa menjadi bencana, tergantung pada apa yang perlu Anda lakukan dengan data setelah dikembalikan.
Salah satu contoh fungsi tersebut adalah STRING_AGG()
. Fungsi ini memungkinkan Anda mengembalikan set hasil sebagai daftar yang dibatasi. Namun, itu juga menghilangkan nilai nol dari kumpulan hasil. Jadi jika kita menggunakan fungsi ini dengan contoh data di atas, kita akan mendapatkan tiga hasil, bukan enam:
SELECT STRING_AGG(TaskCode, ', ') AS Result FROM Tasks;
Hasil:
Result ---------------------- cat123, pnt456, rof789
Jadi tiga baris yang berisi nilai nol tidak dikembalikan.
Dalam banyak kasus, ini adalah hasil yang sempurna, karena kumpulan hasil kami tidak dipenuhi dengan nilai nol. Namun, hal ini juga dapat menyebabkan masalah, bergantung pada data yang akan digunakan.
Oleh karena itu, jika kita ingin mempertahankan baris dengan nilai null, kita dapat menggunakan ISNULL()
untuk mengganti nilai nol dengan nilai lain:
SELECT STRING_AGG(ISNULL(TaskCode, 'N/A'), ', ') AS Result FROM Tasks;
Hasil:
Result ------------------------------------- cat123, N/A, N/A, pnt456, rof789, N/A
Fungsi COALESCE()
ISNULL()
fungsi bekerja dengan cara yang mirip dengan COALESCE()
fungsi. Jadi kita bisa mengganti kode di atas dengan ini:
SELECT STRING_AGG(COALESCE(TaskCode, 'N/A'), ', ') AS Result FROM Tasks;
Dan dapatkan hasil yang sama:
Result ------------------------------------- cat123, N/A, N/A, pnt456, rof789, N/A
Namun, ada beberapa perbedaan dalam cara kedua fungsi tersebut berperilaku. Untuk informasi lebih lanjut tentang perbedaannya, berikut perbandingan COALESCE()
dan ISNULL()
di situs web Microsoft.