Løsning 1:
Som @Jens kommenterede, er det et dårligt DB-design at gemme værdier som CSV. Så den første løsning ville være at ændre dit DB-design, da jeg ikke rigtig ved, hvad du gemmer, og hvad er formålet med din DB/kode I kan ikke skrive et skema eller give noget meningsfuldt forslag.
Løsning 2:
Brug MySQL's find_in_set
funktion.
SELECT id FROM tableWHERE FIND_IN_SET(searchFilterHere, filter_data)
Løsning 3:
Du kan bruge LIKE
operatør. (Nogle medlemmer vil sikkert dræbe mig for at foreslå det, men hvis du ikke vil ændre dit DB-design - dette er en kreativ mulighed).
Lad os tjekke følgende kode:
SELECT id FROM table WHERE filter_data LIKE '%2,%'
Problemet er, at det vil returnere id'et for et felt med 22,
i filter_datas kolonne. Derfor bliver du nødt til at ændre dataene under den kolonne, så ,
vises også som det første og sidste tegn. For eksempel:
id | filter_data |---|--------------1 |,2,3,45,67,4, |2 |,2,3,55,33,5,7, |
Og nu kan du gøre følgende:
SELECT id FROM table WHERE filter_data LIKE '%,2,%'
Hvis du har flere "søgefiltre", kan du kombinere LIKE
s med en ELLER
operatør.