Řešení 1:
Jak poznamenal @Jens, je špatný návrh DB ukládat hodnoty jako CSV. Takže prvním řešením by bylo změnit návrh DB, protože opravdu nevím, co ukládáte a jaký je účel vašeho DB/kódu I neumí napsat schéma ani dát žádný smysluplný návrh.
Řešení 2:
Použijte MySQL find_in_set
funkce.
SELECT id FROM table
WHERE FIND_IN_SET(searchFilterHere, filter_data)
Řešení 3:
Můžete použít LIKE
operátor. (Někteří členové mě pravděpodobně zabijí za to, že jsem to navrhl, ale pokud nechcete změnit návrh DB – toto je kreativní možnost).
Zkontrolujeme následující kód:
SELECT id FROM table WHERE filter_data LIKE '%2,%'
Problém je v tom, že vrátí id pole s 22,
ve sloupci filter_data. Proto budete muset změnit data v tomto sloupci tak, aby ,
se objeví také jako první a poslední znak. Například:
id | filter_data |
---|---------------
1 |,2,3,45,67,4, |
2 |,2,3,55,33,5,7,|
A nyní můžete provést následující:
SELECT id FROM table WHERE filter_data LIKE '%,2,%'
Pokud máte více "filtrů vyhledávání", můžete kombinovat LIKE
s OR
operátor.