Perihal NULL dalam SQL

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