Solución a corto plazo
Use la función FIND_IN_SET :
WHERE FIND_IN_SET('Queensland', csv_column)
... porque usar LIKE con comodines en cualquier extremo es arriesgado, dependiendo de cuántas coincidencias coincidan (y también garantiza un escaneo de la tabla). El rendimiento de LIKE con comodines en ambos lados está a la par con REGEXP, lo que significa que es malo.
Solución a largo plazo
No almacene valores separados por comas; use una relación adecuada de muchos a muchos, que involucre tres tablas:
Cosas
- thing_id (clave principal)
Estados de Australia
- State_id (clave principal)
- Nombre_del_estado
Cosas_a_los_estados_de_Auz
- thing_id (clave principal, clave externa a
THINGS
mesa) - State_id (clave principal, clave externa a
AUSTRALIAN_STATES
mesa)
Necesitará JOIN para obtener datos de las tres tablas, pero si quiere saber cosas como cuántos están asociados a un estado en particular, o dos estados en particular, es el modelo adecuado.