Lösning 1:
Som @Jens kommenterade är det en dålig DB-design att lagra värden som CSV. Så den första lösningen skulle vara att ändra din DB-design eftersom jag inte riktigt vet vad du lagrar och vad som är syftet med din DB/kod I kan inte skriva ett schema eller ge något meningsfullt förslag.
Lösning 2:
Använd MySQL:s find_in_set
funktion.
SELECT id FROM table
WHERE FIND_IN_SET(searchFilterHere, filter_data)
Lösning 3:
Du kan använda LIKE
operatör. (Vissa medlemmar kommer förmodligen att döda mig för att jag föreslår det, men om du inte vill ändra din DB-design - detta är ett kreativt alternativ).
Låt oss kontrollera följande kod:
SELECT id FROM table WHERE filter_data LIKE '%2,%'
Problemet är att det kommer att returnera ID:t för ett fält med 22,
i filter_datas kolumn. Därför måste du ändra data under den kolumnen så att ,
visas också som det första och sista tecknet. Till exempel:
id | filter_data |
---|---------------
1 |,2,3,45,67,4, |
2 |,2,3,55,33,5,7,|
Och nu kan du göra följande:
SELECT id FROM table WHERE filter_data LIKE '%,2,%'
Om du har flera "sökfilter" kan du kombinera LIKE
s med en ELLER
operatör.