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

متوسطقراءة دقيقةآخر تحديث 2 أكتوبر 2026

SQL قواعد البيانات

الإجابة

عندما تدخل قيمة تحتوي على خانات عشرية أكثر مما يسمح به عمود 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 من الأساسيات للاحتراف.

اختبر فهمك

ما القيمة المخزنة التي يعرضها الاستعلام؟

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