NULLs का विशेष व्यवहार होता है:किसी भी चीज़ की NULL से तुलना करने से आपको एक NULL
वापस मिलता है , जो false
. के अलावा कुछ और है या 0
. इसका अर्थ है "अज्ञात"।
उदाहरण के लिए, यह तालिका लें:
user_id | gender
------------------
1 | NULL
2 | 'M'
3 | 'F'
4 | 'F'
SELECT * FROM mytable WHERE gender = 'M'
अपेक्षित के रूप में 1 पंक्ति लौटाएगा
SELECT * FROM mytable WHERE gender != 'M'
2 पंक्तियाँ लौटाएगा, 3 पंक्तियाँ नहीं।
SELECT * FROM mytable WHERE gender != 'M' OR gender IS NULL
अपेक्षित 3 पंक्तियाँ लौटाएगा।
संपादित करें:कुछ अनुप्रयोगों के लिए, 0
. का उपयोग करके (या, भगवान न करे, एक और "मैजिक नंबर") NULL
. के बजाय उचित भी नहीं है (इकाइयाँ या सटीक मान इस उदाहरण में प्रासंगिक नहीं हैं):
Date | Temperature
--------------------------
2010-01-01 | 10
2010-01-02 | 4
2010-01-03 | 0
2010-01-04 | -22
2010-01-05 | -45
2010-01-06 | NULL
2010-01-07 | -34
यहां, NULL
6 जनवरी का अर्थ है "मान अज्ञात" - शायद इसलिए कि तापमान इतना कम था कि थर्मामीटर जांच ने प्रतिक्रिया देना बंद कर दिया। हालांकि, यह 3 जनवरी से बिल्कुल अलग अर्थ है, जब तापमान 0
. था , यानी 0 डिग्री।
साथ ही, जैसा कि @ बिल करविन ने उल्लेख किया है, एनयूएलएल विशेष रूप से समग्र कार्यों में व्यवहार करते हैं (COUNT
,SUM
,AVG
आदि):AVG(Temperature)
की गणना उपरोक्त डेटा पर आपको -14.5
मिलेगा , क्योंकि NULL पंक्ति को अनदेखा कर दिया जाता है।