Senin, 23 November 2009

Masalah NULL dan Fungsi ISNULL() pada Ms SQL Server

Fungsi IsNull() berguna untuk memeriksa suatu kolom ada datanya atau tidak. dan jika tidak ada datanya atau NULL, maka diberi data pengganti.

tbl_coba
Nama Harga
------ ------
A 12000
B NULL
C 21000
D 20000
E 10000

Perhatikan query-query di bawah ini :

SELECT AVG(harga) FROM  tbl_coba

SELECT AVG(ISNULL(harga, 0)) FROM tbl_coba

Hasil AVG(price) didapat dari perhitungan 6300 dibagi 4. Sedangkan hasil AVG(ISNULL(price,0)) didapat dari 6300 / 5. Pembagi AVG(price) adalah 4 karena NULL tidak diikutsertakan. Hasil mana yang benar tergantung dari konteksnya.

Dari ilustrasi di atas, NULL berpotensi dapat menyebabkan perbedaan penghitungan. NULL juga dapat menyebabkan program aplikasi yang mengakses tabel tersebut akan mendapatkan error (Baca Mengatasi Kolom yang Tidak Memiliki Data (NULL) pada VB.Net). Dalam hal ini fungsi ISNULL() menjadi fungsi yang sangat berguna untuk menghindari kesalahan.

Antisipasi agar pada tabel bebas dari NULL adalah membuat kolom menjadi NOT NULL pada saat tabel dibuat atau menggunakan constraint DEFAULT. Tapi kadang juga NULL tidak dapat dihindari :)

Tidak ada komentar: