"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيف يتعامل MySQL مع الأعداد الصحيحة الطويلة في الأعمدة الأقصر: تجاوز السعة أم الاقتطاع؟

كيف يتعامل MySQL مع الأعداد الصحيحة الطويلة في الأعمدة الأقصر: تجاوز السعة أم الاقتطاع؟

تم النشر بتاريخ 2024-11-08
تصفح:122

How Does MySQL Handle Long Integers in Shorter Columns: Overflow or Truncation?

تحويل عدد صحيح طويل في عمود أقصر: الآلية والصيغة

عند إدراج عدد صحيح طويل في عمود صحيح أقصر، عادةً ما تقوم MySQL باقتطاع القيمة لتناسب ضمن الطول المحدد. ومع ذلك، في بعض الحالات، قد يختلف السلوك، مما يؤدي إلى تحويل غير متوقع.

خذ بعين الاعتبار عمودًا صحيحًا طويلًا مكونًا من 10 أرقام some_number. إذا تم إدراج قيمة تتجاوز الحد الأقصى لعدد صحيح (2147483647) في هذا العمود، فبدلاً من الاقتطاع، ستقوم MySQL بتعيين القيمة إلى 2147483647، وهو الحد الأقصى المسموح به لعدد صحيح لهذا النوع من البيانات.

&&&]الآلية وراء التحويل

يحدث التحول بسبب تجاوز عدد صحيح. عندما يتجاوز العدد الصحيح الطويل النطاق المتاح، يفسره MySQL تلقائيًا على أنه عدد صحيح سالب ويخزن التمثيل المكمل للاثنين. هذه القيمة السالبة، عند تحويلها مرة أخرى إلى عدد صحيح غير موقّع، ينتج عنها 2147483647.

صيغة التحويل

يمكن حساب القيمة الناتجة باستخدام الصيغة التالية:

العدد الصحيح الناتج = (العدد الصحيح الأصلي و0x7FFFFFFF) 1
Resulting 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