Решение 1:
Както коментира @Jens, е лош дизайн на DB да се съхраняват стойности като CSV. Така че първото решение би било да промените дизайна на вашата DB, тъй като всъщност не знам какво съхранявате и каква е целта на вашия DB/код I не мога да напиша схема или да даде някакво смислено предложение.
Решение 2:
Използвайте MySQL find_in_setкод>
функция.
SELECT id FROM table
WHERE FIND_IN_SET(searchFilterHere, filter_data)
Решение 3:
Можете да използвате LIKE
оператор. (Някои членове вероятно ще ме убият, че съм го предложил, но ако не искате да промените дизайна на вашата DB - това е творческа опция).
Нека проверим следния код:
SELECT id FROM table WHERE filter_data LIKE '%2,%'
Проблемът е, че ще върне идентификатора на поле с 22,
в колоната на filter_data. Следователно ще трябва да промените данните в тази колона, така че ,
ще се появи също като първи и последен знак. Например:
id | filter_data |
---|---------------
1 |,2,3,45,67,4, |
2 |,2,3,55,33,5,7,|
И сега можете да направите следното:
SELECT id FROM table WHERE filter_data LIKE '%,2,%'
Ако имате няколко „филтъра за търсене“, можете да комбинирате LIKE
s с OR
оператор.