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

لماذا يقوم MySQL بتحويل الأعداد الصحيحة الكبيرة المدرجة إلى أعمدة أقصر؟

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

Why does MySQL transform large integers inserted into shorter columns?

فهم تحويل الأعمدة الرقمية في MySQL

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

على سبيل المثال، ضع في اعتبارك عمودًا يسمى some_number بطول 10. عند إدراج رقم يتجاوز هذا الطول (على سبيل المثال، 715988985123857)، فإنه يتحول إلى 2147483647.

آلية التجاوز

وفقًا لوثائق MySQL، يحدث تجاوز عدد صحيح عندما تتجاوز نتيجة الحساب الحد الأقصى للقيمة المسموح بها لنوع البيانات. في هذه الحالة، الحد الأقصى لقيمة عدد صحيح 10 بت هو 2147483647.

صيغة النتيجة المحسوبة

يتبع التحويل صيغة محددة:

النتيجة = الرقم % (2^بت) - 1
Result = Number % (2^Bits) - 1
حيث:

    الرقم هو الرقم الأصلي الذي يتم إدراجه
  • البت هو عدد البتات في عمود الوجهة
في مثالنا، الرقم هو 715988985123857 والبت هو 10، مما يؤدي إلى:

2147483647
2147483647

BigInt vs.Int

لتجنب تجاوز سعة الأعداد الصحيحة، استخدم نوع بيانات bigint للأعداد الصحيحة الأكبر. يمكن لـ BigInt تخزين قيم تصل إلى 2^63-1، مما يمنع مشكلات الاقتطاع أو التحويل.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3