संभव डुप्लिकेट:
what is “=null” and “ IS NULL”
Is there any difference between IS NULL and =NULLएसक्यूएल बातिल और = रिक्त है
क्या
where x is null
और
बीच का अंतर हैwhere x = null
और बाद वाला काम क्यों नहीं करता?
संभव डुप्लिकेट:
what is “=null” and “ IS NULL”
Is there any difference between IS NULL and =NULLएसक्यूएल बातिल और = रिक्त है
क्या
where x is null
और
बीच का अंतर हैwhere x = null
और बाद वाला काम क्यों नहीं करता?
एसक्यूएल में, एक null
मूल्य और किसी भी अन्य के बीच तुलना एक तुलना ऑपरेटर (उदाहरण =
, !=
, <
, आदि) का उपयोग करके मूल्य (null
सहित) का परिणाम null
होगा, जिसे 01 के रूप में माना जाता हैजहां किसी खंड के प्रयोजनों के लिए (सख्ती से बोलना, यह "गलत" के बजाय "सत्य नहीं है", लेकिन प्रभाव समान है)।
तर्क यह है कि null
का अर्थ "अज्ञात" है, इसलिए null
पर किसी भी तुलना का परिणाम भी "अज्ञात" है। तो आपको where my_column = null
कोडिंग करके पंक्तियों पर कोई हिट नहीं मिलेगी। यदि एक स्तंभ null
है, is null
और is not null
के माध्यम से है, जो एक विशेष शर्त एक null
(या नहीं एक null
) के लिए परीक्षण करने के लिए है
एसक्यूएल के परीक्षण के लिए विशेष सिंटेक्स प्रदान करता है।
यहां कुछ एसक्यूएल विभिन्न स्थितियों और उपरोक्त के अनुसार उनके प्रभाव को दिखा रहा है।
create table t (x int, y int);
insert into t values (null, null), (null, 1), (1, 1);
select 'x = null' as test , x, y from t where x = null
union all
select 'x != null', x, y from t where x != null
union all
select 'not (x = null)', x, y from t where not (x = null)
union all
select 'x = y', x, y from t where x = y
union all
select 'not (x = y)', x, y from t where not (x = y);
रिटर्न केवल 1 पंक्ति (अपेक्षित रूप से):
TEST X Y
x = y 1 1
कि शून्य के बराबर नहीं NULL करता है इस SQLFiddle
और कैसे 'शून्य' काम करता है। – joshua
इस उत्तर के साथ अभी भी कई समस्याएं हैं। "शून्य की तुलना हमेशा झूठी मानी जाती है" - बाधा जांच में नहीं, जैसा कि पहले से ही बताया गया है, और विशेष मामलों में नहीं। 'नूल इज़ नूल' एक तुलना है जो सत्य का मूल्यांकन करेगी। "शून्य मतलब 'अज्ञात' है - नल एक मूल्य के लिए प्लेसहोल्डर है जो उपस्थित होना चाहिए, लेकिन किसी कारण से वर्तमान में गायब है और यह एप्लिकेशन (शून्य नहीं) है जो अर्थपूर्ण अर्थ प्रदान करता है (अज्ञात, लागू नहीं होता है, गवाह उत्तरदायी नहीं था, आदि)। "अगर एक नल सूची में है ..." आपका उदाहरण तालिका में शामिल नहीं है, सूची में नहीं। – onedaywhen
@onedaywhen मैंने सोचा कि मैं स्पष्ट था ... "तुलना" से मेरा मतलब है '=' या '! =' आदि, * नहीं * 'शून्य है 'या' शून्य नहीं है '। एफवाईआई एक कॉलम चयन का परिणाम, जैसे कि 'IN (SELECT ...)' में उपयोग किया जाता है, को "सूची" – Bohemian
पहले जाँच है कि क्या एक फ़ील्ड मान null
देर बाद जिस तरह से आप यह करने की उम्मीद है काम नहीं करेगा क्योंकि null
विशेष मूल्य जो बराबर कुछ भी नहीं करता है, तो आप के लिए =
का उपयोग कर समानता तुलना उपयोग नहीं कर सकते है का सही तरीका है यह।
तो जब आप अगर एक क्षेत्र मूल्य null
है या नहीं की जाँच करने की जरूरत है, का उपयोग करें:
where x is null
के बजाय:
where x = null
यह ध्यान देना महत्वपूर्ण है पर चल रहा है देखो,।
NULL
एक मूल्य नहीं है, और इसलिए इसकी तुलना किसी अन्य मूल्य से नहीं की जा सकती है।
where x is null
जांचता है कि x एक शून्य मान है या नहीं।
where x = null
जाँच कर रहा है कि क्या एक्स शून्य के बराबर होती है, जो सच
नल एक मान है, यह सिर्फ अज्ञात मूल्य है। प्रोग्रामिंग भाषा चर की तरह मूल्य शून्य हो सकता है। इसके अलावा आप तुलना कर सकते हैं अगर (varA! = Null)। एसक्यूएल में हालांकि यह आपके जैसा अलग-अलग व्यवहार करता है। – broadband
@broadband: शून्य एक मान नहीं है, जैसे अनंतता एक संख्या नहीं है। हालांकि यह एक दार्शनिक बात है हालांकि ... हाँ, आप एक चर के लिए "शून्य" असाइन कर सकते हैं, लेकिन इसका मतलब है कि आप उस चर को अनसेट या रीसेट कर रहे हैं। 0 या "" एक मान होगा, लेकिन शून्य प्रभावी ढंग से इसका अर्थ है "इस चर के पास कोई मूल्य नहीं है"। – Sygmoral
@ Sygmoral आंतरिक रूप से जब आप सी # स्ट्रिंग ए = नल में लिखते हैं, तो इसका मतलब है कि आप वैरिएबल 'ए'' मान को 'null' सेट कर रहे हैं। लेकिन प्रोग्रामर के लिए व्याख्या आप की तरह है: 'इस चर के पास कोई मूल्य नहीं है'। एसक्यूएल नल में और भी कई व्याख्याएं या तीन मूल्यवान तर्क हो सकते हैं। – broadband
मैं लगता है कि समानता कुछ है कि पूरी तरह से निर्धारित किया जा सकता है कभी नहीं होगा। शून्य के साथ परेशानी यह है कि यह स्वाभाविक रूप से अज्ञात है। किसी भी अन्य मूल्य के साथ संयुक्त शून्य शून्य है - अज्ञात। एसक्यूएल से पूछना "क्या मेरा मान शून्य के बराबर है?" इनपुट हर समय अज्ञात होगा, भले ही इनपुट शून्य हो। मुझे लगता है कि आईएस न्यूल के कार्यान्वयन से यह स्पष्ट हो जाता है।
क्योंकि एनयूएलएल के साथ किसी भी अंकगणितीय तुलना का परिणाम भी नल है, आप इस तरह की तुलना से कोई सार्थक परिणाम प्राप्त नहीं कर सकते - http://dev.mysql.com/doc/refman/5.0/en/working-with-null। एचटीएमएल – scibuff