CASE (CASE)
«CASE (CASE)» مثل «if-then-else» است. شرط ها را از بالا بررسی می کند. اگر یکی درست بود، همان لحظه مقدار برمی گرداند. اگر هیچ کدام درست نبود، از «ELSE» استفاده می شود. اگر «ELSE» نبود، نتیجه «NULL» می شود. مثل کارنامه مدرسه: نمره > 19 ← «عالی»، نمره = 19 ← «خیلی خوب»، وگرنه «خوب».
سینتکس CASE
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
WHEN conditionN THEN resultN
ELSE result
END;
مثال: برچسب گذاری مقدار با CASE
در این مثال، «Quantity (تعداد)» با متن دوستانه نمایش می شود.
SELECT
OrderID,
Quantity,
CASE
WHEN Quantity > 30 THEN 'The quantity is greater than 30'
WHEN Quantity = 30 THEN 'The quantity is 30'
ELSE 'The quantity is under 30'
END AS QuantityText
FROM OrderDetails;
مثال: ORDER BY با CASE
اگر «City» خالی بود، به جای آن با «Country» مرتب کن.
SELECT
CustomerName,
City,
Country
FROM Customers
ORDER BY
(CASE
WHEN City IS NULL THEN Country
ELSE City
END);
گام های عملی
- ستون هدف را مشخص کن.
- شرط ها را از مهم به کم اهمیت بچین.
- برای حالت های دیگر «ELSE» بگذار.
- کوئری را اجرا و خروجی را ببین.
- شرط نادرست را حذف یا اصلاح کن.
نکته: ترتیب «WHEN» خیلی مهم است؛ اولین «WHEN» درست اجرا می شود و بقیه نادیده می مانند.
لینک های داخلی مفید
- INSERT SELECT برای ساخت داده ورودیِ نمونه.
- HAVING (HAVING) برای فیلترِ گروه ها پس از CASE.
- گروه بندی (GROUP BY) برای خلاصه سازی قبل از CASE.
جمع بندی سریع
- CASE شبیه if-then-else عمل می کند.
- اولین شرط درست، نتیجه را تعیین می کند.
- بدون ELSE و بدون شرط درست، مقدار NULL است.
- ترتیب WHEN را هوشمندانه بچین.