IS DISTINCT FROM विधेय को SQL:1999 के फीचर T151 के रूप में पेश किया गया था, और इसके पठनीय निषेध, IS NOT DISTINCT FROM , को SQL:2003 के फीचर T152 के रूप में जोड़ा गया था। इन विधेय का उद्देश्य यह गारंटी देना है कि दो मानों की तुलना करने का परिणाम या तो सत्य है या गलत , कभी नहीं अज्ञात ।
ये विधेय किसी भी तुलनीय प्रकार (पंक्तियों, सरणियों और मल्टीसेट सहित) के साथ काम करते हैं, जिससे उनका सटीक रूप से अनुकरण करना जटिल हो जाता है। हालाँकि, SQL सर्वर इनमें से अधिकांश प्रकारों का समर्थन नहीं करता है, इसलिए हम शून्य तर्कों/संचालनों की जाँच करके बहुत दूर जा सकते हैं:
-
a IS DISTINCT FROM bके रूप में फिर से लिखा जा सकता है:((a <> b OR a IS NULL OR b IS NULL) AND NOT (a IS NULL AND b IS NULL)) -
a IS NOT DISTINCT FROM bके रूप में फिर से लिखा जा सकता है:(NOT (a <> b OR a IS NULL OR b IS NULL) OR (a IS NULL AND b IS NULL))
आपका अपना उत्तर गलत है क्योंकि यह विचार करने में विफल रहता है कि FALSE OR NULL अज्ञात . का मूल्यांकन करता है . उदाहरण के लिए, NULL IS DISTINCT FROM NULL गलत . का मूल्यांकन करना चाहिए . इसी तरह, 1 IS NOT DISTINCT FROM NULL गलत . का मूल्यांकन करना चाहिए . दोनों ही मामलों में, आपके भाव अज्ञात . उत्पन्न करते हैं ।