شرح جملة CASE في SQL مع أمثلة عملية على WHEN وTHEN

دقائق القراءة: 4

ما هي جملة CASE في SQL؟

تُعد جملة CASE في SQL أداة أساسية لإضافة منطق شرطي داخل الاستعلامات. وببساطة، يمكن اعتبارها المقابل البرمجي لفكرة الشروط مثل if في لغات البرمجة، لكنها تأتي بصياغة تناسب بنية استعلامات قواعد البيانات.

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

شرح جملة CASE في SQL مع أمثلة على الشروط WHEN وTHEN داخل الاستعلامات

متى نستخدم CASE داخل الاستعلامات؟

نلجأ إلى CASE عندما نرغب في تحويل القيم الخام داخل قاعدة البيانات إلى مخرجات أكثر فهماً. فبدلاً من عرض قيم مثل TRUE أو FALSE فقط، يمكننا إظهار رسائل مفهومة مثل: تم التسليم، أو ما يزال المطلوب غير مكتمل.

يُستخدم هذا الأسلوب كثيراً في:

  • تصنيف البيانات إلى فئات.
  • إظهار رسائل مخصصة بحسب حالة السجل.
  • تحسين تقارير قواعد البيانات.
  • تبسيط قراءة النتائج للمستخدمين غير التقنيين.

مثال عملي على بيانات الطلاب

تخيل أنك تدير مقررًا أدبيًا، ويُطلب من الطلاب تسليم مقال من أجل استيفاء متطلبات المادة. ولتتبع حالة التسليم والدرجات، قد تكون لديك بيانات مشابهة للآتي:

معرّف الطالب الاسم حالة التسليم الدرجة
1 John TRUE 86
2 Said TRUE 90
3 Alyssa FALSE NULL
4 Noah TRUE 68
5 Eleanor TRUE 95
6 Akiko FALSE NULL
7 Otto TRUE 76
8 Jamal TRUE 85
9 Kiara TRUE 88
10 Clement FALSE NULL

كيفية كتابة جملة CASE في SQL

البنية الأساسية لجملة CASE تكون على النحو التالي:

CASE
  WHEN condition THEN result
  ELSE alternative_result
END

هناك عناصر أساسية لا بد من وجودها، وهي CASE وWHEN وTHEN وEND. أما ELSE فهو اختياري، لكنه مهم جداً لتغطية الحالات التي لا تنطبق عليها الشروط السابقة. كما يمكن استخدام AS لتسمية العمود الناتج باسم واضح.

وغالباً ما تُكتب جملة CASE داخل جزء SELECT من الاستعلام.

مثال أول: عرض حالة تسليم المقال برسالة مفهومة

إذا أردت عرض رسالة واضحة لكل طالب بدلاً من إظهار قيمة submitted_essay الخام، فيمكنك استخدام الاستعلام التالي:

SELECT
  name,
  CASE
    WHEN submitted_essay IS TRUE THEN 'essay submitted!'
    ELSE 'finish that essay!'
  END AS status
FROM students;

في هذا المثال، يتم عرض اسم الطالب، ثم يتم إنشاء عمود جديد باسم status. إذا كانت قيمة submitted_essay تساوي TRUE فستظهر رسالة تفيد بأن المقال تم تسليمه، وإلا فستظهر رسالة تحث الطالب على إكماله.

النتيجة المتوقعة

الاسم الحالة
Akiko finish that essay!
Clement finish that essay!
Alyssa finish that essay!
Said essay submitted!
Eleanor essay submitted!
Otto essay submitted!
Noah essay submitted!
Kiara essay submitted!
John essay submitted!
Jamal essay submitted!

مثال ثانٍ: استخدام عدة شروط WHEN وTHEN

في كثير من الحالات، لا تكفي مقارنة واحدة فقط. قد ترغب في إظهار تعليق مختلف حسب درجة الطالب، مع الإبقاء على رسالة خاصة بمن لم يسلّم المقال بعد. هنا تظهر قوة جملة CASE عند استخدام عدة شروط متتالية.

SELECT
  name,
  essay_grade,
  CASE
    WHEN essay_grade >= 80 THEN 'great job'
    WHEN essay_grade < 80 THEN 'try harder'
    ELSE 'finish that essay!'
  END AS teacher_comment
FROM students;

يعرض هذا الاستعلام اسم الطالب ودرجته، ثم يضيف تعليقاً مخصصاً في العمود teacher_comment وفقاً للقواعد التالية:

  1. إذا كانت الدرجة أكبر من أو تساوي 80، يظهر التعليق great job.
  2. إذا كانت الدرجة أقل من 80، يظهر التعليق try harder.
  3. إذا لم توجد درجة أساساً وكانت القيمة NULL، فسيتم الوصول إلى ELSE وتظهر رسالة finish that essay!.

النتيجة المتوقعة

الاسم الدرجة تعليق المدرس
Akiko NULL finish that essay!
Clement NULL finish that essay!
Alyssa NULL finish that essay!
Said 90 great job
Eleanor 95 great job
Otto 76 try harder
Noah 68 try harder
Kiara 88 great job
John 86 great job
Jamal 85 great job

فهم دور ELSE وNULL في جملة CASE

من النقاط المهمة عند التعامل مع CASE أن القيم الفارغة مثل NULL لا تتصرف دائماً كما يتوقع بعض المبتدئين. في المثال السابق، تم استخدام ELSE لالتقاط الحالات التي لا تنطبق عليها شروط الدرجات، وهي هنا سجلات الطلاب الذين لم يسلّموا المقال بعد.

وفي بعض السيناريوهات، قد يكون من الأفضل استخدام شرط صريح مثل IS NULL إذا كنت تريد التعامل مباشرة مع القيم الفارغة بدقة أكبر.

مثال أكثر وضوحاً للتعامل مع NULL

SELECT
  name,
  CASE
    WHEN essay_grade IS NULL THEN 'finish that essay!'
    WHEN essay_grade >= 80 THEN 'great job'
    ELSE 'try harder'
  END AS teacher_comment
FROM students;

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

أفضل الممارسات عند استخدام CASE في SQL

  • ابدأ بالشروط الأكثر تحديداً إذا كانت هناك احتمالات متداخلة.
  • استخدم ELSE دائماً تقريباً حتى لا تترك حالات غير معالجة.
  • اختر اسماً واضحاً للعمود الناتج باستخدام AS.
  • احرص على أن تكون الرسائل أو التصنيفات الناتجة مفهومة لمن سيقرأ التقرير.
  • اختبر الاستعلام على بيانات تحتوي على قيم NULL للتأكد من صحة النتائج.

لماذا تعد جملة CASE مهمة في تحسين الاستعلامات؟

رغم أن CASE لا تهدف مباشرة إلى تحسين الأداء، فإنها تحسن جودة المخرجات بشكل كبير. فهي تتيح لك تحويل البيانات التقنية الجافة إلى معلومات قابلة للفهم السريع، وهو أمر مهم عند بناء التقارير ولوحات التحكم وأنظمة المتابعة الداخلية.

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

الخلاصة التقنية

تُعد جملة CASE في SQL من أكثر الأدوات العملية لكتابة استعلامات ذكية وواضحة. فهي تمنحك القدرة على تطبيق منطق شرطي مباشر داخل SELECT، سواء لعرض رسائل مخصصة أو لتصنيف النتائج أو للتعامل مع القيم مثل NULL. ومن الناحية التقنية، كلما أتقنت استخدام CASE بالشكل الصحيح، أصبحت استعلاماتك أكثر قابلية للقراءة وأسهل في التحليل والصيانة.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *