मुद्दा यह है कि NULL को किसी चीज़ के बराबर भी नहीं माना जाता है, लेकिन अजीब बात यह है कि यह अपने आप के बराबर भी नहीं है।
निम्नलिखित कथनों पर विचार करें (जो SQL सर्वर T-SQL में BTW अवैध है, लेकिन My-SQL में मान्य है, हालांकि यह वही है जो ANSI शून्य के लिए परिभाषित करता है, और केस स्टेटमेंट आदि का उपयोग करके SQL सर्वर में भी सत्यापित किया जा सकता है)
SELECT NULL = NULL -- Results in NULL
SELECT NULL <> NULL -- Results in NULL
अतः प्रश्न का कोई सही / गलत उत्तर नहीं है, इसके बजाय उत्तर भी अशक्त है।
उदाहरण के लिए, इसके कई निहितार्थ हैं
- मामला बयान है, जो किसी भी शून्य मान हमेशा और खंड का उपयोग करेगा जब तक आप स्पष्ट का उपयोग करते हैं शून्य हालत (IS NOT हालत )
WHEN NULL
- स्ट्रिंग संघनन, के रूप में
SELECT a + NULL -- Results in NULL
- यदि आप सही परिणाम चाहते हैं, तो किसी भी शून्य मान को फ़िल्टर करने के लिए सहसंबद्ध उप-क्वेरी में सुनिश्चित करने के लिए, जहाँ या उसके खंड में नहीं है।
कोई निर्दिष्ट करके SQL सर्वर में इस व्यवहार को ओवरराइड कर सकता है SET ANSI_NULLS OFF, हालांकि यह अनुशंसित नहीं है और ऐसा नहीं किया जाना चाहिए क्योंकि यह कई मुद्दों का कारण बन सकता है, बस इसलिए कि मानक का विचलन।
(साइड नोट के रूप में, माय-एसक्यूएल में <=>शून्य तुलना के लिए एक विशेष ऑपरेटर का उपयोग करने का विकल्प है ।)
इसकी तुलना में, सामान्य प्रोग्रामिंग भाषाओं में शून्य का उपचार एक नियमित मूल्य है और यह स्वयं के बराबर है, हालांकि एनएएन मूल्य है जो स्वयं के बराबर भी नहीं है, लेकिन कम से कम यह 'झूठी' रिटर्न देता है जब इसकी तुलना में, (और जब समान प्रोग्रामिंग के लिए जाँच नहीं होती है तो विभिन्न प्रोग्रामिंग भाषाओं में अलग-अलग कार्यान्वयन होते हैं)।
ध्यान दें कि बुनियादी भाषाओं (अर्थात VB आदि) में कोई 'शून्य' कीवर्ड नहीं है और इसके बजाय कोई 'कुछ भी नहीं' कीवर्ड का उपयोग करता है, जिसका उपयोग प्रत्यक्ष तुलना में नहीं किया जा सकता है और इसके बजाय किसी को SQL में 'IS' का उपयोग करने की आवश्यकता होती है, हालाँकि यह वास्तव में खुद के बराबर है (अप्रत्यक्ष तुलना का उपयोग करते समय)।