Existem muitos programadores, como eu, que de forma rapida, cria uma coluna na tabela do banco de dados, para guardar somente números, ou ID de uma outra determinada tabela. As vezes o procedimento de desenvolvimento é mais rapido, mais futuramente o campo que é um varchar, para guardar algumas categoria, começa a ficar grande, e o varchar não comporta mais, terendo que mudar para text. Mais para um Blog/Notícias seria o ideal, é raro encontrar 1 Notícia com mais de 5 (cinco) ou 6 (seis) categorias.

Mais a forma de consultar esses resultados, buscando o número exato, alguns perde um tempo até encontrar a solução, usando LIKE, a consulta fica grande, e nem sempre retorna o numero a tupla exata do qual o número foi consultado. Veja tabela abaixo:

|   id    |  name   | categories  |
+---------------------------------+
|    1    | joshua  |  1,13,12,40 |
|    2    | joshua  |  2,8        |

Se observar a tabela acima, verá que a coluna categories, existe registro com vários números separado por vírgulas, com LIKE é possivel consultar, mais irá precisa de 3 LIKE, e nem sempre o resultado é o esperado.

Pesquisando pelo StackOverflow, o usuário Sir Dufo, postou uma solução excelente sem muita gambiara, usando a função FIND_IN_SET do MySQL.

Segue exemplo, de como consultar o número 2.

SELECT *
FROM user
WHERE FIND_IN_SET( '12', action_type );

SQL Fiddle DEMO: http://sqlfiddle.com/#!2/0023b/1/0

Essa é umas das dicas que irei postar, para ajudar futuros e antigos programadores.

Valeu, e fiquem com Deus.


Discussão