Solução 1:
Como @Jens comentou, é um design de banco de dados ruim armazenar valores como CSV. não pode escrever um esquema ou dar qualquer sugestão significativa.
Solução 2:
Use
find_in_set
função. SELECT id FROM table
WHERE FIND_IN_SET(searchFilterHere, filter_data)
Solução 3:
Você pode usar o
LIKE
operador. (Alguns membros provavelmente vão me matar por sugerir isso, mas se você não quiser alterar o design do seu banco de dados - esta é uma opção criativa). Vamos verificar o seguinte código:
SELECT id FROM table WHERE filter_data LIKE '%2,%'
O problema é que ele retornará o id de um campo com
22,
na coluna do filter_data. Portanto, você terá que alterar os dados nessa coluna para que ,
aparecerá também como o primeiro e o último caractere. Por exemplo:id | filter_data |
---|---------------
1 |,2,3,45,67,4, |
2 |,2,3,55,33,5,7,|
E agora você pode fazer o seguinte:
SELECT id FROM table WHERE filter_data LIKE '%,2,%'
Se você tiver vários "filtros de pesquisa", poderá combinar o
LIKE
s com um OU
operador.