Solução de curto prazo
Use a função FIND_IN_SET :
WHERE FIND_IN_SET('Queensland', csv_column)
...porque usar LIKE com curingas em cada extremidade é arriscado, dependendo de quanto/pouco correspondências (e também garante uma varredura de tabela). O desempenho de LIKE com curingas em ambos os lados está no mesmo nível do REGEXP - isso significa ruim.
Solução de longo prazo
Não armazene valores separados por vírgulas -- use uma relação muitos-para-muitos adequada, envolvendo três tabelas:
Coisas
- thing_id (chave primária)
Estados australianos
- State_id (chave primária)
- Nome_estado
Things_to_Auz_States
- thing_id (chave primária, chave estrangeira para
THINGS
tabela) - State_id (chave primária, chave estrangeira para
AUSTRALIAN_STATES
tabela)
Você precisará de JOINs para obter dados das três tabelas, mas se quiser saber quantos estão associados a um estado específico ou a dois estados específicos, esse é o modelo adequado.