सभी के साथ सहमत हैं जो पहले से ही सहमत हैं। सीधे शब्दों में, एक और कोण से टिप्पणी अगर तुम बंद करने के लिए ansi_nulls
सेट करें, जिसका आप प्राप्त कर सकते हैं कि तुम क्या उम्मीद:
अधिक जानकारी पुस्तकें से
set ansi_nulls off
if 1 = null
select 'a'
else
select 'b' -- Returned
if 1 != null
select 'a' -- Returned
else
select 'b'
ऑनलाइन:
जब सेट ANSI_NULLS बंद है, बराबर (=) और बराबर नहीं (<>) तुलना ऑपरेटर आईएसओ मानक का पालन नहीं करते हैं। एक चयन कथन जो WHERE column_name = NULL का उपयोग करता है पंक्तियों को वापस करता है कॉलम_नाम में शून्य मान हैं। एक SELECT कथन जो WHERE कॉलम_नाम <> NULL उन पंक्तियों को वापस करता है जिनमें कॉलम में nonnull मान नहीं हैं। साथ ही, एक SELECT कथन जो WHERE column_name <> XYZ_value का उपयोग करता है उन सभी पंक्तियों को वापस करता है जो XYZ_value नहीं हैं और NULL नहीं हैं।
यह ansi_nulls off
समझाया गया है।
एसक्यूएल सर्वर के भविष्य के संस्करण में, ANSI_NULLS हमेशा पर और कोई भी एप्लिकेशन जिसे स्पष्ट रूप से बंद करने के लिए विकल्प एक त्रुटि उत्पन्न होगा सेट हो जाएगा: हालांकि, बस इसे बंद करने की वजह से की कोशिश नहीं करते। इस सुविधा का उपयोग नए विकास कार्यों में करने से बचें, और इस सुविधा का उपयोग करने वाले अनुप्रयोगों को संशोधित करने के लिए योजना बनाएं।
नीचे सिफारिश बजाय का पालन करें:
के रूप में इरादा एक स्क्रिप्ट काम करने के लिए, ANSI_NULLS डेटाबेस विकल्प या सेट ANSI_NULLS की सेटिंग कुछ भी हो लिए, उपयोग शून्य है और तुलना में शून्य नहीं है इसमें शून्य मान हो सकते हैं।
if 1 is null
select 'a'
else
select 'b' -- Returned
if 1 is not null
select 'a' -- Returned
else
select 'b'
स्रोत
2013-05-16 22:38:03
आप 'कुछ नहीं' के बराबर नहीं हो सकते हैं। – sircodesalot
'NULL' कभी भी बराबर नहीं है, बराबर नहीं, किसी भी चीज़ से अधिक या कम। –
वास्तव में? यह बराबर नहीं हो सकता है? –