Oplossing 1:
Zoals @Jens opmerkte, is het een slecht DB-ontwerp om waarden op te slaan als CSV. Dus de eerste oplossing zou zijn om je DB-ontwerp te wijzigen, omdat ik niet echt weet wat je opslaat en wat het doel is van je DB / code I kan geen schema schrijven of een zinvolle suggestie geven.
Oplossing 2:
Gebruik MySQL's find_in_set
functie.
SELECT id FROM table
WHERE FIND_IN_SET(searchFilterHere, filter_data)
Oplossing 3:
U kunt de LIKE
. gebruiken exploitant. (Sommige leden zullen me waarschijnlijk vermoorden omdat ik het voorstel, maar als je je DB-ontwerp niet wilt wijzigen, is dit een creatieve optie).
Laten we de volgende code eens controleren:
SELECT id FROM table WHERE filter_data LIKE '%2,%'
Het probleem is dat het de id van een veld teruggeeft met 22,
in de filter_data's kolom. Daarom moet u de gegevens onder die kolom wijzigen, dus ,
verschijnt ook als eerste en laatste karakter. Bijvoorbeeld:
id | filter_data |
---|---------------
1 |,2,3,45,67,4, |
2 |,2,3,55,33,5,7,|
En nu kunt u het volgende doen:
SELECT id FROM table WHERE filter_data LIKE '%,2,%'
Als u meerdere "zoekfilters" heeft, kunt u de LIKE
. combineren s met een OR
telefoniste.