NULL, SQL dilinde bilinmeyen/belirsiz anlamındadır. Bu sebeple NULL değerini = (eşittir) veya <> (eşit değildir) sembolü ile kullanamayız. Bunun yerine IS veya IS NOT keyword’lerini kullanırız. Bir kaç basit örnekte konuyu daha iyi anlayacaksınız.

SELECT * FROM dual WHERE 1=1;

Sonuç:   x

SELECT * FROM dual WHERE null=null;

Sonuç:   no rows selected. Yani hiç bir değer dönmez. Çünkü bilinmeyen=bilinmeyen gibi bir karşılaştır yaptık az önce ve bu sebeple bir sonuç dönmedi. Onun yerine IS kullansaydık sonuç dönecekti.

SELECT * FROM dual WHERE null is null;

Sonuç: x

Gördüğünüz üzere NULL=NULL ile NULL IS NULL aynı şeyler gibi gözükse bile aynı şeyler değil.

IN Sözcüğü içinde de NULL’ı kullanmamalıyız, aksi halde sonuç dönmez. Çünkü IN kelimesi arka planda OR lu şekilde tek tek yazılmaktadır. Örneğin:

SELECT COUNT(*) FROM EMPLOYEES
WHERE comm=300 OR comm IS null;

Sonuç: 11. 10 adet null var.

SELECT COUNT(*) FROM EMPLOYEES
WHERE comm IN(300, NULL);

Sonuç: 1. null ları bulamadı çünkü sorgu aşağıdaki mantıkta çalıştı.

Bu sorgu arka planda şu şekilde dönüşüme uğrar
SELECT COUNT(*) FROM EMPLOYEES
WHERE comm = 300 OR comm=NULL;

Sonuç: 1

SELECT COUNT(*) FROM EMPLOYEES
WHERE comm = 300 OR comm IS NULL;

Sonuç: 11.

Sonuç olarak NULL kullanımına dikkat etmeniz gerekir, NULL kullanıyorsak muhakkak IS ile kullamalıyız. Yoksa veri kaybı yaşarız.