SQL’de NULL ve üç değerli mantık
Kısaca: SQL’de NULL “bilinmiyor” demektir, “boş” veya “sıfır” değil. NULL ile karşılaştırmalar ne doğru ne yanlış verir; onlar da “bilinmiyor” döner.
Biraz daha ayrıntılı: SQL üç doğruluk değeri bilir: TRUE, FALSE, UNKNOWN. Bir satır, WHERE sonucunda yalnızca koşul TRUE ise görünür.
Ayrıntılı
- Karşılaştırmalar:
NULL = NULLUNKNOWN’dur, TRUE değil. Bu yüzdenIS NULLveIS NOT NULLkullan. NULL’a duyarlı eşitlik için:IS NOT DISTINCT FROM. - Tipik tuzak:
WHERE durum <> 'x',durum IS NULLolan satırları döndürmez. - NOT IN:
x NOT IN (1, 2, NULL)hiçbir zaman TRUE vermez, çünkü NULL ile karşılaştırma UNKNOWN’dur. Daha iyisiNOT EXISTS. - Aritmetik:
5 + NULLNULL’dır.COALESCE(a, 0)NULL’ı varsayılan bir değerle değiştirir. - Toplamlar:
COUNT(*)satırları sayar,COUNT(sütun)yalnızca NULL olmayan değerleri sayar.SUMveAVGNULL’ı yok sayar. - Sıralama: NULL, sisteme göre başta veya sonda yer alır.
NULLS FIRST/LASTbunu sabitler. - Tasarım: Mümkünse varsayılan değerli
NOT NULLbildir.
Ayrıca bak: NULL kavramı, SQL