SQL sorgular Null ile işleme giren değerleri görmezden gelmektedir. Aşağıdaki örneği çalıştırıp bunu görebilirsiniz. Aslında bu durumun in sorgusunda da devam etmesi ilginç olmuş .
S.A.
Daha ilginc bir tespitim var nedenini tam olarak bilmiyorum fakat bir kaç farklı SQL de denedim ve hep aynı sonuç çıkıyor.
Eğer b tablosundaki b1 alanı özelliklerindeki "Allow Null" değeri "Yes" ise ve satır içerisinde null varsa o satır hariç geri kalan satırlar sorgu sonucu dönüyor.
fakat "Allow Null" değeri "No" ise ve içeride null kayıt bir nedenden dolayı varsa (Olmaması gerekir fakat bazen olabiliyor) ozaman sorgu sonucu tamamen NULL oluyor.
Ehil olmayanlara sabretmek ehil olanları parlatır.
Akıllı birisinden gelen cefa, bilgisizlerin vefasından iyidir.
Bilgiye ulaştı mı ayak, kanat olur
Biz insanı kıyafetiyle ağırlar bilgisiyle uğurlarız. Mevlana
SQL'in en önemli ve en kavraması zor kavramlarından birisidir NULL.
NULL demek "bilinmeyen" demek (NULL means UNKNOWN) diye düşünürseniz daha iyi kavrayabilirsiniz NULL olayını. Yani herşey de olabilir, hiçbirşey de.
Bir de "..ise ve içeride null kayıt bir nedenden dolayı varsa (Olmaması gerekir fakat bazen olabiliyor) ozaman sorgu sonucu tamamen NULL oluyor..." demişsiniz.
Bu dediğiniz FireBird'de olabiliyor (dökümanlarında belirtiyorlar zaten) ancak MS-SQL Server buna müsade etmez. Muhtemelen NULL diye düşündüğünüz değerler "Boş" (EMPTY) değerlerdir. Anlamak için kabaca şöyle bir SQL komutu yazabilirsiniz: SELECT a1 FROM Table1 WHERE a1 = ''.
ikinci verdiğim örnekte dikkat ederseniz
WHERE (NOT (b1 IS NULL))))) şeklinde bir koşul yer alıyor.
buda olanın bir şekilde null olduğunu gösteriyor çünkü bu ifadeyi koyduğumda
sorgu doğru çalışyor
ayrıca is null idyerek sorgulayarak dosyada null olduğunu farkına vardım ve bunun üzerine bu ifadeyi yerleştirdim.
Ehil olmayanlara sabretmek ehil olanları parlatır.
Akıllı birisinden gelen cefa, bilgisizlerin vefasından iyidir.
Bilgiye ulaştı mı ayak, kanat olur
Biz insanı kıyafetiyle ağırlar bilgisiyle uğurlarız. Mevlana