यदि आपको त्रुटि प्राप्त हो रही है संदेश 8115, स्तर 16, अंकगणित अतिप्रवाह त्रुटि int को डेटा प्रकार संख्यात्मक में परिवर्तित करना SQL सर्वर में, यह शायद इसलिए है क्योंकि आप एक ऐसा ऑपरेशन कर रहे हैं जिसके परिणामस्वरूप सीमा से बाहर मान के कारण डेटा रूपांतरण त्रुटि होती है।
ऐसा अक्सर तब होता है जब आप किसी संख्या को किसी भिन्न डेटा प्रकार में बदलने का प्रयास करते हैं, लेकिन यह नए डेटा प्रकार के लिए स्वीकृत सीमा से बाहर है।
त्रुटि का उदाहरण
यहां कोड का एक उदाहरण दिया गया है जो त्रुटि उत्पन्न करता है:
SELECT CAST(275 AS DECIMAL(3, 2));
परिणाम:
Msg 8115, Level 16, State 8, Line 1 Arithmetic overflow error converting int to data type numeric.
इस मामले में मैं एक पूर्णांक को दशमलव में बदलने की कोशिश कर रहा था।
लेकिन मेरी गलती यह है कि मैंने परिणामी दशमलव मान के लिए केवल 3 की सटीकता की अनुमति दी है। यह सटीकता उस मान के लिए पर्याप्त नहीं है जो इस ऑपरेशन द्वारा उत्पन्न किया जाएगा (जो कि 275.00
होगा) )।
समाधान
समस्या आसानी से ठीक हो जाती है:
SELECT CAST(275 AS DECIMAL(5, 2));
परिणाम:
275.00
मैंने जो कुछ किया वह सटीक तर्क को और अधिक पर्याप्त मूल्य तक बढ़ा दिया।
विशेष रूप से, मैंने इसे 3
. से बढ़ा दिया है करने के लिए 5
।
अगर मैं बड़े पूर्णांकों के आने की उम्मीद कर रहा था (उदाहरण के लिए, यदि पूर्णांक डेटाबेस कॉलम में था), तो मुझे सटीकता बढ़ाने की आवश्यकता होगी ताकि यह बड़े मानों को संभाल सके।
स्पष्ट होने के लिए, परिशुद्धता संग्रहीत किए जाने वाले दशमलव अंकों की अधिकतम कुल संख्या है। इस संख्या में दशमलव बिंदु के बाएँ और दाएँ दोनों पक्ष शामिल हैं। सटीकता 1
. से एक मान होनी चाहिए 38
. की अधिकतम सटीकता के माध्यम से . डिफ़ॉल्ट सटीकता 18
. है ।
विभिन्न परिदृश्यों में समान त्रुटि
जब आप SUM()
जैसे किसी फ़ंक्शन का उपयोग करते हैं तो वही त्रुटि (संदेश 8115) हो सकती है (थोड़ा अलग त्रुटि संदेश के साथ) एक कॉलम पर, और परिकलन के परिणामस्वरूप एक मान होता है जो कॉलम के प्रकार की सीमा से बाहर होता है। इसे ठीक करने के लिए SQL सर्वर में "अंकगणित अतिप्रवाह त्रुटि अभिव्यक्ति को डेटा प्रकार int में कनवर्ट करना" देखें।
और वही त्रुटि (संदेश 8115) भी हो सकती है (थोड़ा अलग त्रुटि संदेश के साथ) जब आप किसी तालिका में डेटा सम्मिलित करने का प्रयास करते हैं जब उसकी IDENTITY
कॉलम अपने डेटा प्रकार की सीमा तक पहुंच गया है। फिक्स देखें:"अंकगणित अतिप्रवाह त्रुटि IDENTITY
परिवर्तित कर रहा है इसे कैसे ठीक किया जाए, इसके लिए SQL सर्वर में डेटा प्रकार…” के लिए।