छोटे कॉलम में लंबे पूर्णांक परिवर्तन: तंत्र और सूत्र
एक लंबे पूर्णांक को छोटे पूर्णांक कॉलम में सम्मिलित करते समय, MySQL आम तौर पर मान को छोटा कर देता है निर्दिष्ट लंबाई के भीतर फिट होने के लिए। हालाँकि, कुछ मामलों में, व्यवहार भिन्न हो सकता है, जिसके परिणामस्वरूप अप्रत्याशित परिवर्तन हो सकता है।
10-अंकीय लंबे पूर्णांक कॉलम some_number पर विचार करें। यदि अधिकतम पूर्णांक सीमा (2147483647) से अधिक का मान इस कॉलम में डाला जाता है, तो काट-छाँट के बजाय, MySQL मान को 2147483647 पर सेट करेगा, जो उस डेटा प्रकार के लिए अधिकतम अनुमत पूर्णांक है।
इसके पीछे तंत्र परिवर्तन
परिवर्तन पूर्णांक अतिप्रवाह के कारण होता है। जब लंबा पूर्णांक उपलब्ध सीमा से अधिक हो जाता है, तो MySQL स्वचालित रूप से इसे एक नकारात्मक पूर्णांक के रूप में व्याख्या करता है और दोनों के पूरक प्रतिनिधित्व को संग्रहीत करता है। यह नकारात्मक मान, जब एक अहस्ताक्षरित पूर्णांक में वापस परिवर्तित किया जाता है, तो परिणाम 2147483647 होता है। ]
परिणाम पूर्णांक = (मूल पूर्णांक और 0x7एफएफएफएफएफएफ) 1दिए गए उदाहरण के लिए, 715988985123857 के मूल पूर्णांक के साथ:
परिणाम पूर्णांक = (715988985123857 और 0x7एफएफएफएफएफएफ) 1 परिणामी पूर्णांक = (2147483647) 1 परिणामी पूर्णांक = 2147483647इसलिए, 715988985123857 से 2147483647 में परिवर्तन कोई कटौती नहीं है, बल्कि निर्दिष्ट डेटा प्रकार के लिए अधिकतम अनुमत पूर्णांक का अतिप्रवाह है।अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3