अधिकतर आपको इसके बारे में कुछ नहीं करना चाहिए।
ansi_warnings
. सेट करके चेतावनी को अक्षम करना संभव है बंद लेकिन इसके अन्य प्रभाव हैं, उदा। जब आपके प्रश्नों में अनुक्रमित दृश्य, गणना किए गए कॉलम या XML विधियों जैसी सुविधाओं का उपयोग किया जाता है, तो शून्य से विभाजन को कैसे नियंत्रित किया जाता है और विफलताओं का कारण बन सकता है।- कुछ सीमित मामलों में आप इससे बचने के लिए समुच्चय को फिर से लिख सकते हैं। जैसे
COUNT(nullable_column)
SUM(CASE WHEN nullable_column IS NULL THEN 0 ELSE 1 END)
लेकिन शब्दार्थ को बदले बिना सीधे तौर पर ऐसा करना हमेशा संभव नहीं होता है।
यह केवल SQL मानक में आवश्यक सूचनात्मक संदेश है। संदेश स्ट्रीम में अवांछित शोर जोड़ने के अलावा इसका कोई बुरा प्रभाव नहीं पड़ता है (अर्थ के अलावा कि SQL सर्वर केवल NULL
पढ़ने को बायपास नहीं कर सकता है। पंक्तियाँ, जो ओवरहेड हो सकती हैं लेकिन चेतावनी को अक्षम करने से इस संबंध में बेहतर निष्पादन योजना नहीं मिलती है)
इस संदेश को वापस करने का कारण यह है कि SQL नल में अधिकांश संचालन के दौरान प्रचारित होता है।
SELECT NULL + 3 + 7
रिटर्न NULL
(NULL
. के बारे में एक अज्ञात मात्रा के रूप में यह ? + 3 + 7
अज्ञात भी है)
लेकिन
SELECT SUM(N)
FROM (VALUES (NULL),
(3),
(7)) V(N)
रिटर्न 10
और चेतावनी कि नल को नजरअंदाज कर दिया गया था।
हालांकि ये बिल्कुल वही शब्दार्थ हैं जो आप चाहते हैं सामान्य एकत्रीकरण प्रश्नों के लिए। अन्यथा एकल NULL
. की उपस्थिति इसका मतलब यह होगा कि सभी पंक्तियों में उस कॉलम पर एकत्रीकरण हमेशा NULL
उत्पन्न करेगा जो बहुत उपयोगी नहीं है।
नीचे सबसे भारी केक कौन सा है? (इमेज सोर्स, क्रिएटिव कॉमन्स इमेज मेरे द्वारा बदली (क्रॉप और एनोटेट))
तीसरे केक के वजन के बाद तराजू टूट गया और इसलिए चौथे के बारे में कोई जानकारी उपलब्ध नहीं है लेकिन परिधि को मापना अभी भी संभव था।
+--------+--------+---------------+
| CakeId | Weight | Circumference |
+--------+--------+---------------+
| 1 | 50 | 12.0 |
| 2 | 80 | 14.2 |
| 3 | 70 | 13.7 |
| 4 | NULL | 13.4 |
+--------+--------+---------------+
क्वेरी
SELECT MAX(Weight) AS MaxWeight,
AVG(Circumference) AS AvgCircumference
FROM Cakes
रिटर्न
+-----------+------------------+
| MaxWeight | AvgCircumference |
+-----------+------------------+
| 80 | 13.325 |
+-----------+------------------+
हालांकि तकनीकी रूप से यह निश्चित रूप से कहना संभव नहीं है कि 80 सबसे भारी केक का वजन था (क्योंकि अज्ञात संख्या बड़ी हो सकती है) ऊपर दिए गए परिणाम आम तौर पर अज्ञात लौटने की तुलना में अधिक उपयोगी होते हैं।
+-----------+------------------+
| MaxWeight | AvgCircumference |
+-----------+------------------+
| ? | 13.325 |
+-----------+------------------+
तो संभव है कि आप चाहते हैं कि NULLs को नज़रअंदाज़ किया जाए, और चेतावनी आपको केवल इस तथ्य के प्रति सचेत करती है कि ऐसा हो रहा है।