شبكة تعلم مع ناو

كيف يقرّب MySQL الخانات الزائدة عند الإدخال في DECIMAL؟

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

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

مثال

CREATE TABLE orders (
  amount DECIMAL(5,2)
);
INSERT INTO orders (amount) VALUES (12.345);
SELECT amount FROM orders;

باختصار: تخزين 12.345 في هذا العمود ينتج 12.35، ولا يحتفظ بالخانة الثالثة.

هل تريد تعلّم SQL خطوة بخطوة مع تمارين عملية؟ تابع مسار SQL من الأساسيات للاحتراف.

اختبر نفسك

خمسة أسئلة سريعة، مع الإجابة والشرح بعد كل سؤال.