मेरे पास एक क्वेरी थी (उपसर्ग वाले पोस्टग्रेज और इंफॉर्मिक्स के लिए) NOT IN
जिसमें एक उपश्रेणी थी जिसमें कुछ मामलों में NULL
मान लौटाए गए थे , जिसके कारण वह खंड (और संपूर्ण क्वेरी) कुछ भी वापस करने में विफल रहा।
इसे समझने का सबसे अच्छा तरीका क्या है? मैंने NULL
बिना मूल्य के कुछ के रूप में सोचा , और इसलिए क्वेरी के असफल होने की उम्मीद नहीं थी, लेकिन जाहिर है कि यह सोचने का सही तरीका नहीं है NULL
।
x <> NULL
समाधान के रूप में देखते हैं, तो आप इसका मूल्यांकन करने कीFALSE
अपेक्षा करेंगे , और ऐसा नहीं है। दोनों का मूल्यांकन । चाल यह है कि एक पंक्ति का चयन केवल तभी किया जाता है यदि खंड (यदि वर्तमान) का मूल्यांकन करता है - यदि पंक्ति या तो खंड का मूल्यांकन करती है तो एक पंक्ति छोड़ दी जाती है । यह व्यवहार (सामान्य रूप से, और विशेष रूप से विधेय के लिए ) SQL मानक द्वारा अनिवार्य है।NOT (x <> NULL)
TRUE
UNKNOWN
WHERE
TRUE
FALSE
UNKNOWN
NOT IN