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

SQL सर्वर में "अंकगणित अतिप्रवाह त्रुटि अभिव्यक्ति को डेटा प्रकार int में परिवर्तित करना" को ठीक करें

यदि आपको त्रुटि प्राप्त हो रही है संदेश 8115, स्तर 16, अंकगणित अतिप्रवाह त्रुटि अभिव्यक्ति को डेटा प्रकार int में परिवर्तित करना SQL सर्वर में, यह हो सकता है कि आप एक परिकलन कर रहे हैं जिसके परिणामस्वरूप मान सीमा से बाहर है।

ऐसा हो सकता है जब आप SUM() जैसे किसी फ़ंक्शन का उपयोग करते हैं एक कॉलम पर, और परिकलन के परिणामस्वरूप एक ऐसा मान प्राप्त होता है जो कॉलम के प्रकार की सीमा से बाहर होता है।

त्रुटि का उदाहरण

यहां कोड का एक उदाहरण दिया गया है जो त्रुटि उत्पन्न करता है:

SELECT SUM(bank_balance) 
FROM accounts;

परिणाम:

Msg 8115, Level 16, State 2, Line 1
Arithmetic overflow error converting expression to data type int.

इस मामले में मैंने SUM() . का इस्तेमाल किया bank_balance का योग प्राप्त करने के लिए कार्य करें कॉलम, जिसका डेटा प्रकार int . है ।

त्रुटि इसलिए हुई क्योंकि गणना का परिणाम int . की सीमा से बाहर है डेटा प्रकार।

यहाँ मेरी तालिका का सारा डेटा है:

SELECT bank_balance 
FROM accounts;

परिणाम:

+----------------+
| bank_balance   |
|----------------|
| 1300000000     |
| 1200000000     |
| 800500000      |
+----------------+

ये कुछ बड़े बैंक बैलेंस हैं... और इन तीनों को जोड़ने पर एक int से बड़ी संख्या में परिणाम मिलते हैं। संभाल सकता है (int सीमा -2,147,483,648 से 2,147,483,647) है।

समाधान

हम int . को परिवर्तित करके इस त्रुटि से निपट सकते हैं कॉलम को bigint जब हम क्वेरी चलाते हैं:

SELECT SUM(CAST(bank_balance AS bigint)) 
FROM Accounts;

परिणाम:

3300500000

इस बार इसने काम किया।

अधिक स्थायी समाधान के लिए आप वास्तविक कॉलम का डेटा प्रकार भी बदल सकते हैं।

यदि आप सोच रहे हैं, तो bigint रेंज -9,223,372,036,854,775,808 से 9,223,372,036,854,775,807 है।

विभिन्न परिदृश्यों में समान त्रुटि

वही त्रुटि (संदेश 8115) भी हो सकती है (थोड़ा अलग त्रुटि संदेश के साथ) जब आप डेटा प्रकारों के बीच स्पष्ट रूप से कनवर्ट करने का प्रयास करते हैं और मूल मान नए प्रकार की सीमा से बाहर होता है। इसे ठीक करने के लिए SQL सर्वर में "अंकगणित अतिप्रवाह त्रुटि को डेटा प्रकार संख्यात्मक में परिवर्तित करना" देखें।

जब आप किसी तालिका में डेटा डालने का प्रयास करते हैं, तो वही त्रुटि (संदेश 8115) भी हो सकती है (थोड़ा अलग त्रुटि संदेश के साथ) जब इसकी IDENTITY कॉलम अपने डेटा प्रकार की सीमा तक पहुंच गया है। फिक्स देखें:"अंकगणित अतिप्रवाह त्रुटि IDENTITY परिवर्तित कर रहा है इसे कैसे ठीक किया जाए, इसके लिए SQL सर्वर में डेटा प्रकार…” के लिए।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर में चयन क्वेरी में कॉलम उपनाम को समझें - SQL सर्वर / TSQL ट्यूटोरियल भाग 115

  2. SQL सर्वर में LIMIT 10..20

  3. मैं 'नामित पाइप्स प्रदाता, त्रुटि 40 -' SQL सर्वर से कनेक्शन नहीं खोल सका' त्रुटि को कैसे ठीक करूं?

  4. सी # प्रोग्राम के भीतर संग्रहीत प्रक्रिया को कैसे निष्पादित करें

  5. SQL सर्वर (T-SQL) में डेटाबेस मेल खाता हटाएं