Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

चेतावनी प्राप्त करना:कुल या अन्य सेट ऑपरेशन द्वारा शून्य मान समाप्त हो गया है

अधिकतर आपको इसके बारे में कुछ नहीं करना चाहिए।

  • 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 को नज़रअंदाज़ किया जाए, और चेतावनी आपको केवल इस तथ्य के प्रति सचेत करती है कि ऐसा हो रहा है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SqlServerSpatial.dll लोड करने में असमर्थ

  2. Microsoft SQL Server 2012 क्वेरी प्रबंधन स्टूडियो में JDBC 4.0 से अधिक लेकिन सेकंड (सेकंड) क्यों लेती है?

  3. तालिका के लिए स्तंभ जानकारी प्राप्त करें या SQL सर्वर में देखें (T-SQL:sp_columns)

  4. Row_number के साथ SQL अद्यतन ()

  5. गलत रचनाक्रम पास के ''