Solution à court terme
Utilisez la fonction FIND_IN_SET :
WHERE FIND_IN_SET('Queensland', csv_column)
... parce que l'utilisation de LIKE avec des caractères génériques à chaque extrémité est risquée, en fonction du nombre/peu de correspondances (et cela garantit également une analyse de table). Les performances de LIKE avec des caractères génériques de chaque côté sont comparables à celles de REGEXP, ce qui signifie mauvais.
Solution à long terme
Ne stockez pas de valeurs séparées par des virgules :utilisez une relation plusieurs-à-plusieurs appropriée, impliquant trois tables :
Choses
- thing_id (clé primaire)
États australiens
- State_id (clé primaire)
- State_name
Things_to_Auz_States
- thing_id (clé primaire, clé étrangère vers
THINGS
tableau) - State_id (clé primaire, clé étrangère vers
AUSTRALIAN_STATES
tableau)
Vous aurez besoin de JOIN pour extraire des données des trois tables, mais si vous voulez savoir des choses comme combien sont associées à un état particulier, ou à deux états particuliers, c'est le bon modèle.