با استفاده از تابع STRCMP در MySQL یک پرس‌وجو بنویسید که از جدول employees فقط رکوردهایی را انتخاب کند که مقدار ستون last_name از نظر الفبایی مساوی یا بزرگ‌تر از 'M' باشد.

29.0 بازدید آخرین ویرایش در 198 روز قبل ساعت 05:39

0.0

برای حل این مسئله از تابع STRCMP(str1, str2) در قسمت WHERE استفاده کنید؛ این تابع در MySQL مقادیر -1 (str1 کوچکتر)، 0 (مساوی) و 1 (str1 بزرگتر) را برمی‌گرداند، بنابراین شرط STRCMP(last_name,'M') >= 0 رکوردهایی را که نام خانوادگی برابر یا بعدی از 'M' هستند بازمی‌گرداند (مثلاً: SELECT * FROM employees WHERE STRCMP(last_name,'M') >= 0;). نکات مفید: ترتیب و حساسیت به حروف بزرگ/کوچک به collation بستگی دارد؛ برای نتایج یکسان می‌توانید از LOWER() یا COLLATE برای نرمال‌سازی استفاده کنید.

توسط پژوهشگر در 198 روز قبل ساعت 05:39
دسته بندی ها: MySQL MySQL for beginner
arman در 198 روز قبل ساعت 05:39

تابع STRCMP با شرط STRCMP(last_name,'M') >= 0 برای مقایسه الفبایی مناسب است اما به خاطر حساسیت به collation ممکن است نتایج بسته به تنظیمات مخزن متفاوت باشند؛ برای نتیجه‌ی یکسان از LOWER() یا تعیین COLLATE استفاده کنید. همچنین اعمال تابع روی ستون (مثلاً STRCMP یا LOWER روی last_name) معمولاً مانع استفاده از ایندکس می‌شود و می‌تواند کارایی را کاهش دهد، پس اگر collation مناسب دارید بهتر است مستقیماً از last_name >= 'M' استفاده کنید. در صورت وجود حروف غیرلاتین یا نمادهای یونیکد، نرمال‌سازی رشته‌ها و توجه به ترتیب لوکال لازم است تا مقایسه‌ها مطابق انتظار انجام شوند.

گزارش

1 پاسخ

جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من

در حال بارگیری...
ورود به حساب کاربری