CASE STATEMENT دستور
- دستور CASE از بین شرط های مختلفی که تعریف میشود یکی یکی نتیجه را تست میکند تا به اولین شرطی برسد که نتیجه آن True است و درنهایت دستور مربوط به آن شرط را اجرا میکند.
- معمولا در انتهای عبارت بعد از تعریف شروط یک عبارت ELSE نیز آورده میشود تا درصورتیکه هیچ یک از شروط صادق نبودند آن عبارت اجرا شود.
- دقت کنید که استفاده از ELSE اجباری نیست و اگر از ELSE استفاده نشود و هیچ یک از شروط نیز برقرار نباشند مقدار NULL بازگردانده میشود.
- نحوه استفاده از دستور CASE:
CASE WHEN condition1 THEN result1 WHEN condition2 THEN result2 WHEN conditionN THEN resultN ELSE result END
مثال:
- در مثال پیش رو از جدول OrderDetails بررسی میشود که در ستون Quantity:
- آیا مقدار درج شده در این ستون بیش از ۳۰ مورد است؟ اگر جواب مثبت باشد مقدار ‘The quantity is greater than 30’ چاپ میشود و اگر جواب منفی باشد شرط دوم بررسی میشود.
- در شرط دوم بررسی میشود که آیا تعداد درج شده در ستون Quantity برابر با ۳۰ مورد است؟ اگر جواب مثبت باشد مقدار ‘The quantity is 30’ چاپ میشود ولی اگر جواب منفی باشد وارد دستور ELSE میشود.
- در ELSE نتیجه ‘The quantity is under 30’ چاپ میشود.
در نهایت هر نتیجه ای که به عنوان خروجی برگردانده شود در ستونی به نام QuantityText در جدول OrderDetails چاپ میشود.
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 OrderDetail
مثال:
- در این مثال نیز CustomerName, City, CustomerID از جدول Customers واکشی میشوند و درنهایت برای مرتب سازی دیتای واکشی شده شرط بررسی میشود:
- اگر City دارای مقدار NULL باشد آنگاه براساس CustomerID مرتب سازی انجام خواهد شد در غیر اینصورت وارد شرط ELSE میشود.
- در شرط ELSE نیز مرتب سازی براساس City انجام میشود.
SELECT CustomerName, City, CustomerID
FROM Customers
ORDER BY
(CASE
WHEN City IS NULL THEN CustomerID
ELSE City
END)