NULL, Kosong yang bukan karakter kosong
Sering kali dalam menggunakan sintaks database, kita temui istilah NULL. Konon, Null adalah KOSONG, tapi apakah benar NULL itu kosong? Samakah dengan karakter kosong, atau angka 0? Perhatikan kilasan contoh table dan script di bawah ini:
SELECT * FROM `biodata` WHERE `tempatlahir` IS NOT ('');
apakah perbedaan dengan
SELECT * FROM `biodata` WHERE `tempatlahir` IS NOT NULL;
Dalam dunia programming, dan terutama SQL, NULL tidak dianggap sebagai karakter dan tidak bernilai. NULL memang kosong, tapi bukan karakter kosong. Beda antara
SELECT ('');
dengan
SELECT (NULL);
Dengan perbedaan value tersebut, maka terdapat perbedaan pembahasaan NULL. Misal akan dicari isi biodata yang tempatlahir BUKAN NULL, maka akan seperti ini
SELECT * FROM `biodata` WHERE `tempatlahir` IS NOT NULL
(Pilih dari tabel biodata yang TIDAK KOSONG)
bukan
SELECT * FROM `biodata` WHERE `tempatlahir` NOT IN(NULL);
Jika akan dicari tempat lahir yang null maka akan seperti ini:
SELECT * FROM `biodata` WHERE `tempatlahir` IS NULL;
(Pilih dari tabel biodata yang tempat lahirnya ADALAH KOSONG)
bukan
SELECT * FROM `biodata` WHERE `tempatlahir`=NULL
Sedangkan untuk sekedar karakter kosong, maka Operasional Query akan menjadi seperti ini
SELECT * FROM `biodata` WHERE `tempatlahir` NOT IN('');
(Pilih dari tabel biodata yang tempat lahirnya tidak ”)
dan
SELECT * FROM `biodata` WHERE `tempatlahir`='';
Dengan sifat NULL tersebut, maka tidak seharusnya NULL dikenai operasional matematis, baik penjumlahan, equal, samadengan, tidak sama dengan, kurang dari, dan lain-lainnya. Namun pembahasaannya adalah : IS NOT NULL (tidak kosong), IS NULL (adalah kosong)
SELECT (“”) berisi nilai karakter kosong. Tetapi dia sebenarnya tidak kosong, sehingga NOT NULL
SELECT (0) memang berisi angka 0, tetapi dia tidak kosong maka dia tidak NULL, NOT NULL
Tanda NULL dalam SQL akan ditandai dengan kata NULL dalam record yang berisi nilai tersebut.
Untuk mengetahui sebuah record berisi nilai NULL maka dapat menggunakan sintaks sejenis berikut :
SELECT ISNULL(`namafield`) FROM `table`;
Jika NULL maka akan berisi angka 1, dan jika tidak null akan berisi 0
Sekian, semoga berguna
bimosaurus
eof