मैं इस लेख पढ़ रहा था: Get null == null in SQLक्यों अशक्त बराबर नहीं शून्य पर है झूठी
और आम सहमति है कि जब दो (नल) एसक्यूएल स्तंभों के बीच समानता का परीक्षण करने की कोशिश कर रहा, सही दृष्टिकोण है:
where ((A=B) OR (A IS NULL AND B IS NULL))
जब ए और बी न्यूल हैं, (ए = बी) अभी भी गलत लौटाता है, क्योंकि न्यूल शून्य के बराबर नहीं है। यही कारण है कि अतिरिक्त जांच की आवश्यकता है।
असमानताओं का परीक्षण करते समय क्या होगा? उपरोक्त चर्चा से के बाद, यह मुझे लगता है कि परीक्षण असमानता को मैं की तरह कुछ करने के लिए की आवश्यकता होगी बनाया:
WHERE ((A <> B) OR (A IS NOT NULL AND B IS NULL) OR (A IS NULL AND B IS NOT NULL))
हालांकि, मैंने देखा है कि है कि जरूरी नहीं है (कम से कम इन्फोर्मिक्स 11.5 पर नहीं), और मैं यह कर सकते हैं बस करें:
where (A<>B)
यदि ए और बी न्यूल हैं, तो यह गलत हो जाता है। यदि न्यूल शून्य के बराबर नहीं है, तो क्या यह सत्य वापस नहीं आना चाहिए?
संपादित
ये सब अच्छा जवाब हैं, लेकिन मुझे लगता है कि मेरे सवाल का एक छोटे से अस्पष्ट था। मुझे अलग तरीके से व्यक्त करने की अनुमति दें:
WHERE ((A <> B) OR (A IS NOT NULL AND B IS NULL) OR (A IS NULL AND B IS NOT NULL))
:
यह देखते हुए कि या तो ए या बी शून्य हो सकता है, यह काफी
where (A<>B)
के साथ अपने असमानता की जाँच करने या मैं स्पष्ट रूप से इस तरह की जांच करने की आवश्यकता है है इस प्रश्न के उत्तर के लिए
इस thread पर रेफर करें।
संक्षेप में में ऐसा कभी नहीं कर सकते हैं करने के लिए बदला जा सकता है, ' कुछ भी = नूल 'पूर्ण है (न तो सत्य और न ही झूठा)। और 'कुछ भी <> न्यूल' भी शून्य है। –