در دنیای پیچیده پایگاههای داده، نیاز به ابزارهایی برای مدیریت و دستهبندی اطلاعات به طور کارآمد و موثر، امری ضروری است. در میان این ابزارها، دستور CASE در SQL Server به عنوان ابزاری قدرتمند و انعطافپذیر برای دستهبندی مقادیر و اعمال منطق شرطی در کوئریها، جایگاه ویژهای دارد. در این مقاله در کندو، ما به بررسی جامع دستور CASE در SQL Server، از جمله ساختار، نحو و کاربردهای مختلف آن میپردازیم.
چه شما دانشجویان علوم کامپیوتر و پایگاه داده باشید، چه توسعهدهندگان نرمافزار و یا متخصصان پایگاه داده، این مقاله به شما کمک میکند تا از قدرت و انعطافپذیری دستور CASE در SQL Server برای ارتقای مهارتهای خود و حل چالشهای پیچیده در دنیای دادهها استفاده کنید، پس برای آشنایی با دستور Case در SQL، تا انتهای این مقاله با آموزشگاه مهندسی کندو همراه باشید.
دستور Case در SQL چیست؟
دستور CASE در SQL به شما این امکان را میدهد که بر اساس شرایط مختلف، مقادیر مختلفی را برگردانید. این کار به جای نوشتن چندین عبارت IF-THEN-ELSE جداگانه انجام میشود. ساختار کلی دستور CASE به صورت زیر است:
CASE
WHEN شرط1 THEN مقدار1
WHEN شرط2 THEN مقدار2
...
ELSE مقدار_پیش_فرض
END
در این ساختار:
CASE کلمه کلیدی است که شروع دستور را نشان میدهد. شرط1، شرط2، … عباراتی هستند که باید بررسی شوند و مقدار1، مقدار2، … مقادیری هستند که در صورت برقراری شرط مربوطه برگردانده میشوند. همچنین مقدار_پیش_فرض مقداری است که در صورتی که هیچ یک از شروط برقرار نشود، برگردانده میشود.
مزایای استفاده از دستور CASE عبارتند از:
- خوانایی کد را افزایش میدهد.
- منطق شرطی را به روشی فشرده و سازمان یافته بیان میکند.
- عملکرد را در مواردی که شرایط متعددی باید بررسی شوند، بهبود میبخشد.
برای مثال، میتوانید از دستور CASE برای دستهبندی مشتریان بر اساس میزان خرید یا تبدیل نمره امتحان به حرف استفاده کنید.
برای اینکه بدانید نرم افزار SQL چیست، این مطلب را بخوانید.
انواع مختلف دستور Case
در SQL، دو نوع اصلی دستور CASE وجود دارد:
1. دستور CASE ساده:
این نوع دستور CASE فقط از یک عبارت WHEN و یک عبارت ELSE (اختیاری) استفاده میکند.
ساختار کلی آن به شرح زیر است:
CASE
WHEN شرط THEN مقدار
ELSE مقدار_پیشفرض
END
در این نوع دستور CASE، فقط یک شرط بررسی میشود. اگر شرط برقرار باشد، مقدار مربوطه برگردانده میشود. در غیر این صورت، مقدار پیشفرض (اگر مشخص شده باشد) برگردانده میشود.
مثال:
SELECT
CASE
WHEN age >= 18 THEN 'بالغ'
ELSE 'نابالغ'
END AS age_group
FROM Customers;
در این مثال، اگر سن مشتری 18 سال یا بیشتر باشد، به عنوان “بالغ” طبقهبندی میشود. در غیر این صورت، به عنوان “نابالغ” طبقهبندی میشود.
2. دستور CASE جستجوی چندگانه:
این نوع دستور CASE از چندین عبارت WHEN برای بررسی چندین شرط به طور متوالی استفاده میکند.
ساختار کلی آن به شرح زیر است:
CASE
WHEN شرط1 THEN مقدار1
WHEN شرط2 THEN مقدار2
...
ELSE مقدار_پیشفرض
END
در این نوع دستور CASE، شرایط به ترتیب بررسی میشوند. اولین شرطی که برقرار باشد، مقدار مربوطه را برمیگرداند و بررسی متوقف میشود. اگر هیچ یک از شرایط برقرار نشود، مقدار پیشفرض (اگر مشخص شده باشد) برگردانده میشود.
مثال:
SELECT
CASE
WHEN score >= 90 THEN 'ممتاز'
WHEN score >= 80 THEN 'خوب'
WHEN score >= 70 THEN 'متوسط'
ELSE 'ضعیف'
END AS grade
FROM Students;
در این مثال، اگر نمره دانشآموزی 90 یا بیشتر باشد، به عنوان “ممتاز” طبقهبندی میشود. اگر نمره بین 80 و 90 باشد، به عنوان “خوب” و به همین ترتیب.
تفاوتهای بین دو نوع دستور CASE
دستور CASE ساده از نظر ساختار و استفاده آسانتر است اما دستور CASE جستجوی چندگانه قدرتمندتر است و میتواند برای بررسی چندین شرط به طور همزمان استفاده شود.
همچنین از دستور CASE ساده برای مواردی که فقط یک شرط باید بررسی شود استفاده میشود ولی از دستور CASE جستجوی چندگانه برای مواردی که باید چندین شرط به طور متوالی بررسی شود استفاده میشود.
مثالهایی از دستور Case ساده
در اینجا چند نمونه از دستور Case ساده در SQL آورده شده است:
1. دستهبندی سنی:
فرض کنید جدولی به نام customers با ستونهای age و age_category دارید. میخواهید age_category را با توجه به age به صورت زیر دستهبندی کنید:
- زیر 18 سال: Minor
- 18 تا 24 سال: Young Adult
- 25 تا 54 سال: Adult
- 55 سال به بالا: Senior
SELECT
customer_id,
age,
CASE
WHEN age < 18 THEN 'Minor'
WHEN age < 25 THEN 'Young Adult'
WHEN age < 55 THEN 'Adult'
ELSE 'Senior'
END AS age_category
FROM customers;
2. تبدیل نمره امتحان به حرف:
فرض کنید جدولی به نام students با ستونهای exam_score و letter_grade دارید. میخواهید letter_grade را با توجه به exam_score به صورت زیر تبدیل کنید:
- 90 تا 100: A
- 80 تا 89: B
- 70 تا 79: C
- 60 تا 69: D
- زیر 60: F
SELECT
student_id,
exam_score,
CASE
WHEN exam_score >= 90 THEN 'A'
WHEN exam_score >= 80 THEN 'B'
WHEN exam_score >= 70 THEN 'C'
WHEN exam_score >= 60 THEN 'D'
ELSE 'F'
END AS letter_grade
FROM students;
3. تعیین وضعیت موجودی:
فرض کنید جدولی به نام products با ستونهای stock_level و stock_status دارید. میخواهید stock_status را با توجه به stock_level به صورت زیر تنظیم کنید:
- موجودی بیشتر از 100: In stock
- موجودی بین 20 تا 100: Low stock
- موجودی کمتر از 20: Out of stock
SELECT
product_id,
stock_level,
CASE
WHEN stock_level > 100 THEN 'In stock'
WHEN stock_level >= 20 THEN 'Low stock'
ELSE 'Out of stock'
END AS stock_status
FROM products;
4. محاسبه تخفیف:
فرض کنید جدولی به نام orders با ستونهای order_amount و discount_rate دارید. میخواهید discount_amount را با توجه به order_amount و discount_rate به صورت زیر محاسبه کنید:
اگر order_amount بیشتر از 1000 باشد، discount_rate 10% است. در غیر این صورت، discount_rate 5% است.
SELECT
order_id,
order_amount,
discount_rate,
CASE
WHEN order_amount > 1000 THEN order_amount * 0.1
ELSE order_amount * 0.05
END AS discount_amount
FROM orders;
5. استخراج روز هفته از تاریخ:
فرض کنید جدولی به نام dates با ستون date دارید. میخواهید day_of_week را با توجه به date به صورت زیر استخراج کنید:
- 1: Sunday
- 2: Monday
- …
- 7: Saturday
SELECT
date_id,
date,
CASE
WHEN DAYOFWEEK(date) = 1 THEN 'Sunday'
WHEN DAYOFWEEK(date) = 2 THEN 'Monday'
...
WHEN DAYOFWEEK(date) = 7 THEN 'Saturday'
END AS day_of_week
FROM dates;
اینها فقط چند نمونه ساده از کاربردهای دستور CASE در SQL هستند. با کمی خلاقیت، میتوانید از این دستور قدرتمند برای حل طیف گستردهای از مسائل استفاده کنید.
برای آشنایی بیشتر با ردیابی تغییرات در SQL، این مطلب را بخوانید.
سخن نهایی
در این مقاله در کندو، به بررسی دستور CASE در SQL Server پرداختیم. این دستور ابزاری قدرتمند برای مدیریت منطق پیچیده در پرس و جوهای SQL است. با استفاده از CASE، می توانید به طور مستقیم مقادیر را بر اساس شرایط خاص ارزیابی و دستهبندی کرده و نتایج را به طور دلخواه نمایش دهید. ممنون که تا انتهای این مقاله با ما همراه بودید، امیدواریم که مقاله فوق برای شما مفید واقع شده باشد.
سوالات متداول
1. دستور Case در SQL Server برای چه کاری استفاده می شود؟
دستور Case ابزاری قدرتمند برای مدیریت منطق پیچیده در پرس و جوهای SQL است. با استفاده از Case، می توانید به طور مستقیم مقادیر را بر اساس شرایط خاص ارزیابی و دستهبندی کرده و نتایج را به طور دلخواه نمایش دهید.
۲. منابعی برای یادگیری بیشتر در مورد دستور Case در SQL Server وجود دارد؟
بله، میتوانید برای یادگیری بیشتر در مورد دستور Case، به مستندات رسمی SQL Server و همچنین مقالات و آموزشهای آنلاین مختلف مراجعه کنید.