مقدمة:

عند التعامل مع الأرقام في قواعد بيانات SQL، قد تحتاج إلى تقليل عدد الخانات العشرية، تقريب الأرقام لأقرب قيمة صحيحة، أو تقليل الرقم لأقرب عدد صحيح أقل. لتحقيق هذه الأهداف، تستخدم دوال مثل ROUND و CEILING و FLOOR، ولكل دالة وظيفة مختلفة تناسب متطلباتك.


1. دالة ROUND

الوصف:

دالة ROUND تُستخدم لتقريب الأرقام إلى عدد معين من الخانات العشرية بناءً على القيم العشرية.

الصيغة:

ROUND(number, decimal_places)
  • number: الرقم الذي تريد تقريبه.
  • decimal_places: عدد الخانات العشرية التي تريد الاحتفاظ بها.

أمثلة:

1. تقريب رقم عشري:

SELECT ROUND(4.567, 2) AS RoundedValue;
  • النتيجة: 4.57

2. تقريب لأقرب عدد صحيح:

SELECT ROUND(4.5, 0) AS RoundedValue;
  • النتيجة: 5

3. تقريب رقم سالب:

SELECT ROUND(-4.567, 2) AS RoundedValue;
  • النتيجة: -4.57

مشاكل شائعة مع ROUND:

المشكلة: عدد زائد من الأصفار

في SQL Server، قد تحتفظ دالة ROUND بعدد أكبر من الأصفار بعد العلامة العشرية إذا كان نوع البيانات الأساسي (Data Type) مثل FLOAT أو DECIMAL.

مثال على المشكلة:

SELECT ROUND(SUM(LAT_N), 2) AS RoundedValue
FROM STATION;
  • النتيجة: 42850.0400000000 بدلاً من 42850.04.

الحل:

استخدم CAST أو CONVERT لضبط نوع البيانات وعدد الخانات العشرية:

SELECT CAST(ROUND(SUM(LAT_N), 2) AS DECIMAL(10, 2)) AS RoundedValue
FROM STATION;

أو استخدام FORMAT للعرض فقط:

SELECT FORMAT(SUM(LAT_N), 'N2') AS RoundedValue
FROM STATION;

2. دالة CEILING

الوصف:

دالة CEILING تُستخدم لتقريب الرقم دائمًا إلى أقرب عدد صحيح أعلى من الرقم الحالي، بغض النظر عن القيم العشرية.

الصيغة:

CEILING(number)
  • number: الرقم الذي تريد تقريبه.

أمثلة:

1. تقريب رقم عشري لأعلى:

SELECT CEILING(4.2) AS RoundedUp;
  • النتيجة: 5

2. تقريب رقم سالب لأعلى:

SELECT CEILING(-4.2) AS RoundedUp;
  • النتيجة: -4

3. رقم صحيح بالفعل:

SELECT CEILING(5) AS RoundedUp;
  • النتيجة: 5 (لا يتم تغييره لأنه عدد صحيح).

3. دالة FLOOR

الوصف:

دالة FLOOR تُستخدم لتقريب الرقم إلى أقرب عدد صحيح أقل من الرقم الحالي.

الصيغة:

FLOOR(number)
  • number: الرقم الذي تريد تقريبه.

أمثلة:

1. تقريب رقم عشري لأسفل:

SELECT FLOOR(4.8) AS RoundedDown;
  • النتيجة: 4

2. تقريب رقم سالب لأسفل:

SELECT FLOOR(-4.8) AS RoundedDown;
  • النتيجة: -5

3. رقم صحيح بالفعل:

SELECT FLOOR(5) AS RoundedDown;
  • النتيجة: 5 (لا يتم تغييره لأنه عدد صحيح).

مقارنة بين ROUND و CEILING و FLOOR

الدالةالوصفمثالالنتيجة
ROUNDتقرب الرقم لأقرب قيمة بناءً على الخانات العشريةROUND(4.567, 2)4.57
CEILINGتقرب الرقم دائمًا لأعلى عدد صحيحCEILING(4.2)5
FLOORتقرب الرقم دائمًا لأسفل عدد صحيحFLOOR(4.8)4

أخطاء شائعة:

  1. الـROUND لا يتحكم في عدد الأصفار المعروضة:
    • الحل: استخدم CAST أو CONVERT.
  2. عدم فهم الفرق بين CEILING و FLOOR:
    • الـCEILING للأعلى، FLOOR للأسفل.

الخاتمة:

  • استخدم ROUND للتحكم في عدد الخانات العشرية.
  • استخدم CEILING لتقريب الرقم لأعلى.
  • استخدم FLOOR لتقريب الرقم لأسفل.

هذه الدوال تمنحك مرونة كبيرة للتعامل مع الأرقام وتخصيص النتائج وفقًا لاحتياجاتك، سواء كان المطلوب هو تقريب للأعلى، للأسفل، أو التحكم في الدقة العشرية.