در جدول products که ستون tags شامل رشتهای از برچسبها جداشده با کاما است، با استفاده از تابع FIND_IN_SET تمام محصولاتی را بازیابی کنید که برچسب 'electronics' دارند و آنها را بر اساس نام مرتب کنید.
37.0 بازدید آخرین ویرایش در 198 روز قبل ساعت 05:56 0.0
برای این مسئله از MySQL و تابع FIND_IN_SET استفاده کنید؛ مثلاً SELECT * FROM products WHERE FIND_IN_SET('electronics', tags) > 0 ORDER BY name;. توجه داشته باشید FIND_IN_SET مقدار موقعیت (عدد صحیح) را برمیگرداند یا 0 اگر وجود نداشته باشد. نکات: اگر در دادهها فاصله بعد از کاما وجود دارد، قبل از جستجو میتوانید از REPLACE(tags,' ','') یا TRIM استفاده کنید و در نظر داشته باشید که نگهداری دادهها بهصورت CSV در یک ستون برای جستجو بهینه نیست و بهتر است ساختار نرمالشده با جدول میانی استفاده شود.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
نکته سریع: برای یافتن رکوردها میتوانید WHERE FIND_IN_SET('electronics', tags) > 0 را استفاده کنید چون FIND_IN_SET موقعیت عددی را برمیگرداند یا 0 اگر وجود نداشته باشد. اگر دادهها فاصله بعد از کاما دارند ابتدا از REPLACE(tags,' ','') یا توابع TRIM/REGEXP برای پاکسازی استفاده کنید تا تطابق دقیقتر شود. توجه داشته باشید که FIND_IN_SET روی ستونهای CSV قابل ایندکس نیست و برای کارایی و نگهداری بهتر بهتر است از جدول میانی نرمالشده یا نوع JSON با ایندکسهای مناسب استفاده کنید.
گزارش