Lösung 1:
Wie @Jens kommentierte, ist es ein schlechtes DB-Design, Werte als CSV zu speichern. Die erste Lösung wäre also, Ihr DB-Design zu ändern, da ich nicht wirklich weiß, was Sie speichern und was der Zweck Ihrer DB / Ihres Codes I ist kann kein Schema schreiben oder sinnvolle Vorschläge machen.
Lösung 2:
Verwenden Sie MySQLs find_in_set
Funktion.
SELECT id FROM table
WHERE FIND_IN_SET(searchFilterHere, filter_data)
Lösung 3:
Sie können den LIKE
verwenden Operator. (Einige Mitglieder werden mich wahrscheinlich umbringen, weil ich es vorgeschlagen habe, aber wenn Sie Ihr DB-Design nicht ändern möchten - dies ist eine kreative Option).
Lassen Sie uns den folgenden Code überprüfen:
SELECT id FROM table WHERE filter_data LIKE '%2,%'
Das Problem ist, dass es die ID eines Feldes mit 22,
zurückgibt in der Spalte filter_data. Daher müssen Sie die Daten unter dieser Spalte ändern, also ,
erscheint auch als erstes und letztes Zeichen. Zum Beispiel:
id | filter_data |
---|---------------
1 |,2,3,45,67,4, |
2 |,2,3,55,33,5,7,|
Und jetzt können Sie Folgendes tun:
SELECT id FROM table WHERE filter_data LIKE '%,2,%'
Wenn Sie mehrere "Suchfilter" haben, können Sie die LIKE
kombinieren s mit einem OR
Betreiber.