تحويل عدد صحيح طويل في عمود أقصر: الآلية والصيغة
عند إدراج عدد صحيح طويل في عمود صحيح أقصر، عادةً ما تقوم MySQL باقتطاع القيمة لتناسب ضمن الطول المحدد. ومع ذلك، في بعض الحالات، قد يختلف السلوك، مما يؤدي إلى تحويل غير متوقع.
خذ بعين الاعتبار عمودًا صحيحًا طويلًا مكونًا من 10 أرقام some_number. إذا تم إدراج قيمة تتجاوز الحد الأقصى لعدد صحيح (2147483647) في هذا العمود، فبدلاً من الاقتطاع، ستقوم MySQL بتعيين القيمة إلى 2147483647، وهو الحد الأقصى المسموح به لعدد صحيح لهذا النوع من البيانات.
&&&]الآلية وراء التحويل
يحدث التحول بسبب تجاوز عدد صحيح. عندما يتجاوز العدد الصحيح الطويل النطاق المتاح، يفسره MySQL تلقائيًا على أنه عدد صحيح سالب ويخزن التمثيل المكمل للاثنين. هذه القيمة السالبة، عند تحويلها مرة أخرى إلى عدد صحيح غير موقّع، ينتج عنها 2147483647.صيغة التحويل
يمكن حساب القيمة الناتجة باستخدام الصيغة التالية:العدد الصحيح الناتج = (العدد الصحيح الأصلي و0x7FFFFFFF) 1Resulting Integer = (Original Integer & 0x7FFFFFFF) 1بالنسبة للمثال المذكور، مع عدد صحيح أصلي 715988985123857:العدد الصحيح الناتج = (715988985123857 & 0x7FFFFFFFF) 1 العدد الصحيح الناتج = (2147483647) 1 العدد الصحيح الناتج = 2147483647
Resulting Integer = (Original Integer & 0x7FFFFFFF) 1لذلك، فإن التحويل من 715988985123857 إلى 2147483647 لا يعد اقتطاعًا بل تجاوز إلى الحد الأقصى لعدد صحيح مسموح به لنوع البيانات المحدد.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3