यदि आपको त्रुटि प्राप्त हो रही है संदेश 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 सर्वर में डेटा प्रकार…” के लिए।