Ana içeriğe geç
Kesit SQL
Temel · Temeller

NULL: bilinmeyen değer

IS NULL, IS NOT NULL ve NULL'ın üç değerli mantığı.

Uygulamada aç, 11 alıştırmayı çözÜcretsiz, hesap gerekmez, kurulum yok.

Bu sayfa dersin okuma sürümüdür. Metin bir kutuyu çalıştırmanı ya da adıma geçmeni söylüyorsa dersi uygulamada aç.

NULL sıfır değildir, boş metin değildir

NULL “değer yok / bilinmiyor” demektir. Bazı müşterilerimizin şehri veya e-postası bilinmiyor; bu hücrelerde NULL var.

NULL'ı = ile arayamazsın

NULL ile yapılan her karşılaştırma bilinmeyen (UNKNOWN) sonucunu verir, doğru değil. Bu yüzden şu sorgu hiçbir satır döndürmez:

SELECT * FROM customers WHERE email = NULL;  -- yanlış!

Doğrusu:

SELECT first_name, last_name, email
FROM customers
WHERE email IS NULL;

Tersi için IS NOT NULL.

Üç değerli mantık

SQL'de bir koşul DOĞRU, YANLIŞ veya BİLİNMEYEN olabilir. WHERE sadece DOĞRU olan satırları alır.

İfadeSonuç
NULL = NULLBİLİNMEYEN
NULL <> 5BİLİNMEYEN
5 + NULLNULL
TRUE OR NULLDOĞRU
FALSE AND NULLYANLIŞ
Klasik hataWHERE city <> 'İstanbul' şehri NULL olan müşterileri getirmez. Onları da istiyorsan: WHERE city <> 'İstanbul' OR city IS NULL.

Derinleş: NULL nerelerde karşına çıkar?

DurumÖrnekDoğru yazım
Henüz olmamış olayİptal edilen siparişin delivered_at değeridelivered_at IS NULL
Bilinmeyen bilgiMüşterinin ilçesiCOALESCE(district, 'Belirtilmemiş')
UygulanamazVadesiz hesabın kredi limitiOrtalamada payda dikkat: AVG boşları atlar
SELECT COUNT(*) AS toplam,
       COUNT(courier_id) AS kuryeli,
       COUNT(*) - COUNT(courier_id) AS kuryesiz
FROM lk_orders;

Raporda bir oran hesaplarken paydanın boşları içerip içermediğini her zaman açıkça söyle.

Alıştırmalara geç (11)