لماذا نستخدم ELSE داخل CASE عند تحديث عمود؟

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

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

الإجابة

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

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

مثال

UPDATE employees
SET bonus = CASE
  WHEN department = 'Sales' THEN 200
  ELSE bonus
END;

يمنح المثال موظفي المبيعات مكافأة محددة، ويبقي مكافآت بقية الأقسام كما هي. جميع الصفوف تقع ضمن نطاق الأمر، لكن التعبير يحدد النتيجة المناسبة لكل صف.

باختصار: استخدم ELSE column_name عندما تريد إبقاء القيمة الحالية للفروع غير المطابقة.

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

اختبر فهمك

ما قيمة bonus للموظف رقم 2 بعد تنفيذ الكود؟

CREATE TABLE employees (
  id INT PRIMARY KEY,
  department VARCHAR(20) NOT NULL,
  bonus INT NOT NULL
);
INSERT INTO employees VALUES (1, 'Sales', 50), (2, 'IT', 80);
UPDATE employees
SET bonus = CASE
  WHEN department = 'Sales' THEN 200
  ELSE bonus
END;
SELECT bonus FROM employees WHERE id = 2;