در SQL، CASE و IF دو ساختار شرطی هستند که برای انجام عملیات شرطی در کوئریها استفاده میشوند. این ساختارها به شما این امکان را میدهند که بسته به شرایط خاصی، مقادیر مختلفی را در نتایج کوئری بازگردانید یا عملیاتی متفاوت انجام دهید.
1. عملگر CASE در SQL
CASE در SQL بهعنوان یک ساختار شرطی پیچیدهتر از عملگر IF است و میتواند برای ارزیابی چندین شرط و بازگشت مقادیر مختلف استفاده شود. این عملگر مشابه به دستورات if-else در زبانهای برنامهنویسی است، با این تفاوت که در SQL از آن برای ایجاد شرایط در کوئریها استفاده میشود.
ساختار:
CASE
WHEN شرط1 THEN نتیجه1
WHEN شرط2 THEN نتیجه2
ELSE نتیجه_default
END AS نتیجه_نهایی
FROM جدول;
توضیحات:
- WHEN: شرطی است که باید ارزیابی شود.
- THEN: نتیجهای است که در صورت درست بودن شرط برگردانده میشود.
- ELSE: نتیجهای است که در صورت نادرست بودن همه شرایط WHEN برگشت داده میشود (اختیاری).
- END: پایان عملگر CASE است.
مثال:
فرض کنید جدولی به نام کاربران دارید که شامل ستونهای نام و امتیاز است و میخواهید بر اساس امتیاز، رتبه کاربر را تعیین کنید. میتوانید از CASE به شکل زیر استفاده کنید:
امتیاز,
CASE
WHEN امتیاز >= 90 THEN 'عالی'
WHEN امتیاز >= 75 THEN 'خوب'
WHEN امتیاز >= 50 THEN 'متوسط'
ELSE 'ضعیف'
END AS رتبه
FROM کاربران;
در اینجا:
- اگر امتیاز کاربر بیشتر از یا برابر 90 باشد، رتبه "عالی" خواهد بود.
- اگر امتیاز بین 75 تا 89 باشد، رتبه "خوب" خواهد بود.
- اگر امتیاز بین 50 تا 74 باشد، رتبه "متوسط" خواهد بود.
- در غیر این صورت، رتبه "ضعیف" خواهد بود.
2. عملگر IF در SQL
عملگر IF در SQL بیشتر در برخی از سیستمهای مدیریت پایگاه داده (DBMS) مانند MySQL استفاده میشود و برای ارزیابی یک شرط و بازگشت نتیجه بر اساس آن شرط مورد استفاده قرار میگیرد. در واقع، IF در SQL مشابه به دستور if-else در زبانهای برنامهنویسی است.
ساختار:
IF(شرط, نتیجه_صحیح, نتیجه_غلط) AS نتیجه_نهایی
FROM جدول;
توضیحات:
- شرط: شرطی است که باید ارزیابی شود.
- نتیجه_صحیح: مقداری که اگر شرط درست باشد برگردانده میشود.
- نتیجه_غلط: مقداری که اگر شرط نادرست باشد برگردانده میشود.
مثال:
اگر بخواهید در جدول کاربران بررسی کنید که اگر امتیاز کاربر بالای 75 باشد، "قبول" و در غیر این صورت "رد" را نمایش دهید، میتوانید از IF استفاده کنید:
امتیاز,
IF(امتیاز > 75, 'قبول', 'رد') AS وضعیت
FROM کاربران;
در اینجا:
- اگر امتیاز کاربر بیشتر از 75 باشد، وضعیت "قبول" خواهد بود.
- در غیر این صورت، وضعیت "رد" خواهد بود.
تفاوتهای بین CASE و IF در SQL:
ویژگی | CASE | IF |
---|---|---|
ساختار | میتواند چندین شرط را ارزیابی کند و نتایج مختلفی برگشت دهد. | تنها یک شرط را ارزیابی کرده و دو نتیجه دارد. |
تعداد شرایط | میتواند چندین شرط WHEN داشته باشد. | تنها یک شرط را بررسی میکند. |
تعداد نتایج | میتواند چندین نتیجه مختلف (برای هر شرط) داشته باشد. | دو نتیجه دارد: یکی برای شرط درست و یکی برای شرط نادرست. |
پشتیبانی DBMS | پشتیبانی شده در بیشتر DBMSها (SQL Server، PostgreSQL، Oracle) | عمدتاً در MySQL استفاده میشود. |
استفاده رایج | برای شرایط پیچیده و ارزیابی چندین شرط. | برای شرایط سادهتر و بررسی یک شرط خاص. |
نتیجهگیری:
- CASE یک ابزار قدرتمند و انعطافپذیر است که میتوانید از آن برای ارزیابی چندین شرط و بازگشت مقادیر مختلف در کوئریها استفاده کنید. این عملگر در بیشتر سیستمهای مدیریت پایگاه داده پشتیبانی میشود.
- IF به طور خاص در MySQL و برخی دیگر از DBMSها وجود دارد و برای ارزیابی یک شرط و برگشت دو نتیجه مختلف (یکی برای درست بودن شرط و دیگری برای نادرست بودن آن) کاربرد دارد.
در نهایت، انتخاب بین CASE و IF بستگی به پیچیدگی شرایط و نوع سیستم مدیریت پایگاه داده شما دارد. اگر نیاز به ارزیابی چندین شرط دارید، CASE گزینه بهتری است. اگر فقط نیاز به یک شرط ساده دارید، IF میتواند کاربردیتر باشد.
