EMZETT.
Giriş yap

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 = NULL UNKNOWN’dur, TRUE değil. Bu yüzden IS NULL ve IS NOT NULL kullan. NULL’a duyarlı eşitlik için: IS NOT DISTINCT FROM.
  • Tipik tuzak: WHERE durum <> 'x', durum IS NULL olan 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 iyisi NOT EXISTS.
  • Aritmetik: 5 + NULL NULL’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. SUM ve AVG NULL’ı yok sayar.
  • Sıralama: NULL, sisteme göre başta veya sonda yer alır. NULLS FIRST/LAST bunu sabitler.
  • Tasarım: Mümkünse varsayılan değerli NOT NULL bildir.

Ayrıca bak: NULL kavramı, SQL