با استفاده از تابع FIND_IN_SET در MySQL، رکوردهای جدول products را که فیلد colors آنها شامل مقدار 'red' بهعنوان یک مقدار جداشده با کاما است، انتخاب کنید.
27.0 بازدید آخرین ویرایش در 198 روز قبل ساعت 04:59 0.0
برای حل، از عبارت SELECT همراه با شرط WHERE و تابع FIND_IN_SET استفاده کنید؛ مثلاً WHERE FIND_IN_SET('red', colors) > 0 که مقدار بزرگتر از صفر به معنی وجود آن مقدار در لیست جداشده با کاما است. توجه داشته باشید ترتیب آرگومانها مهم است (مقدار جستجو شده اول، رشتهٔ لیست دوم)، مقدار بازگشتی اندیس یا صفر است، فضای اضافه داخل مقادیر تأثیر دارد و این روش برای طراحیهای غیرنرمال (ذخیره چند مقدار در یک فیلد) مناسب است ولی از ایندکسها بهره نمیبرد—در صورت امکان نرمالسازی دادهها را مدنظر قرار دهید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای انتخاب رکوردها میتوانید از WHERE FIND_IN_SET('red', colors) > 0 استفاده کنید که وجود مقدار را با بازگشت اندیس بررسی میکند. توجه داشته باشید ترتیب آرگومانها مهم است و مقدار بازگشتی صفر یا اندیس (1+) است؛ لذا مقایسه با > 0 صحیح است. فاصلههای اضافی داخل مقادیر (مثل ' red' یا 'red ') میتواند موجب عدم تطابق شود، بنابراین دادهها را پیش از جستجو پاکسازی یا تراش دهید. همچنین این روش از ایندکس استفاده نمیکند، پس برای عملکرد و نگهداری بهتر در صورت امکان دادهها را نرمالسازی یا از انواع مناسب مثل JSON/SET بهره ببرید.
گزارش