در جدول 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 در یک ستون برای جستجو بهینه نیست و بهتر است ساختار نرمال‌شده با جدول میانی استفاده شود.

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

نکته سریع: برای یافتن رکوردها می‌توانید WHERE FIND_IN_SET('electronics', tags) > 0 را استفاده کنید چون FIND_IN_SET موقعیت عددی را برمی‌گرداند یا 0 اگر وجود نداشته باشد. اگر داده‌ها فاصله بعد از کاما دارند ابتدا از REPLACE(tags,' ','') یا توابع TRIM/REGEXP برای پاک‌سازی استفاده کنید تا تطابق دقیق‌تر شود. توجه داشته باشید که FIND_IN_SET روی ستون‌های CSV قابل ایندکس نیست و برای کارایی و نگهداری بهتر بهتر است از جدول میانی نرمال‌شده یا نوع JSON با ایندکس‌های مناسب استفاده کنید.

گزارش

1 پاسخ

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

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