Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Suchpost-Array in kommagetrenntem Spaltenwert

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.