مش موجودة في Ms sql بس ممكن تبدلها ب CASE Statement


دالة IF() في MySQL بتعمل زي الـ if-else في لغات البرمجة. بتسمح لك ترجع قيمة معينة لو الشرط صحيح، أو قيمة تانية لو الشرط خطأ.


الصيغة العامة لدالة IF():

IF(condition, value_if_true, value_if_false)
  • condition: الشرط اللي عايز تختبره.
  • value_if_true: القيمة اللي هترجع لو الشرط صحيح.
  • value_if_false: القيمة اللي هترجع لو الشرط خطأ.

أمثلة عملية على استخدام IF()

1. اختبار شرط بسيط:

SELECT IF(500 < 1000, "YES", "NO");
  • الشرح: لو الرقم 500 أصغر من 1000 (الشرط صحيح)، هترجع القيمة “YES”، وإلا هترجع “NO”.
  • النتيجة: YES.

2. اختبار شرط بأرقام:

SELECT IF(500 < 1000, 5, 10);
  • الشرح: لو 500 أقل من 1000 (الشرط صحيح)، هترجع القيمة 5، وإلا هترجع 10.
  • النتيجة: 5.

3. مقارنة نصوص:

SELECT IF(STRCMP("hello", "bye") = 0, "YES", "NO");
  • الشرح:
    • STRCMP بتقارن بين النصين “hello” و”bye”.
    • لو النصوص متساوية (الشرط صحيح)، هترجع “YES”، وإلا هترجع “NO”.
  • النتيجة: NO لأن النصوص مختلفة.

4. تطبيق داخل استعلام على جدول:

لو عندك جدول اسمه OrderDetails يحتوي على الأعمدة OrderID وQuantity، وعايز تعرف إذا كانت الكمية أكبر من 10 أو لأ:

SELECT OrderID, Quantity, IF(Quantity > 10, "MORE", "LESS") AS QuantityStatus
FROM OrderDetails;
  • الشرح:
    • بتختبر إذا كانت الكمية (Quantity) أكبر من 10.
    • لو الشرط صحيح، هترجع “MORE”، وإلا هترجع “LESS”.
  • النتيجة: لكل طلب، العمود الإضافي QuantityStatus هيعرض “MORE” أو “LESS” بناءً على الكمية.

ملاحظات تقنية:

  1. دالة IF() متوفرة في MySQL من الإصدار 4.0 وما بعده.
  2. بتستخدم غالبًا لتسهيل كتابة الاستعلامات اللي بتحتاج شروط بسيطة.
  3. لو عايز شروط معقدة أكتر، ممكن تفكر تستخدم CASE Statement.

مقارنة بين النصوص والأرقام باستخدام IF():

مقارنة أرقام:

SELECT IF(100 > 50, "GREATER", "SMALLER");
  • النتيجة: GREATER.

مقارنة نصوص:

SELECT IF("apple" = "orange", "EQUAL", "NOT EQUAL");
  • النتيجة: NOT EQUAL.

خلاصة:

  • دالة IF() سهلة ومباشرة، وبتساعدك تضيف منطق بسيط لاستعلامات MySQL.
  • مناسبة للاختبارات السريعة والقرارات البسيطة في قواعد البيانات.
  • لو عندك شروط أكتر تعقيدًا أو متعددة، الأفضل تستخدم CASE Statement.