فهم تحويل الأعمدة الرقمية في MySQL
غالبًا ما تقوم MySQL بتحويل الأعداد الصحيحة الطويلة إلى قيم غير متوقعة عند إدراجها في أعمدة أقصر. بدلاً من الاقتطاع، يقوم MySQL بضبط القيمة المخزنة. يُعزى هذا السلوك إلى آلية تجاوز الأعداد الصحيحة.
على سبيل المثال، ضع في اعتبارك عمودًا يسمى some_number بطول 10. عند إدراج رقم يتجاوز هذا الطول (على سبيل المثال، 715988985123857)، فإنه يتحول إلى 2147483647.
آلية التجاوز
وفقًا لوثائق MySQL، يحدث تجاوز عدد صحيح عندما تتجاوز نتيجة الحساب الحد الأقصى للقيمة المسموح بها لنوع البيانات. في هذه الحالة، الحد الأقصى لقيمة عدد صحيح 10 بت هو 2147483647.صيغة النتيجة المحسوبة
يتبع التحويل صيغة محددة:النتيجة = الرقم % (2^بت) - 1Result = Number % (2^Bits) - 1حيث:
2147483647
2147483647
BigInt vs.Int
لتجنب تجاوز سعة الأعداد الصحيحة، استخدم نوع بيانات bigint للأعداد الصحيحة الأكبر. يمكن لـ BigInt تخزين قيم تصل إلى 2^63-1، مما يمنع مشكلات الاقتطاع أو التحويل.تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3