Kurzfristige Lösung
Verwenden Sie die FIND_IN_SET-Funktion :
WHERE FIND_IN_SET('Queensland', csv_column)
... weil die Verwendung von LIKE mit Platzhaltern an beiden Enden riskant ist, je nachdem, wie viele/wenige Übereinstimmungen vorhanden sind (und es stellt auch einen Tabellenscan sicher). Die Leistung von LIKE mit Platzhaltern auf beiden Seiten ist auf Augenhöhe mit REGEXP – das bedeutet schlecht.
Langfristige Lösung
Speichern Sie keine durch Kommas getrennten Werte – verwenden Sie eine richtige Viele-zu-Viele-Beziehung mit drei Tabellen:
Dinge
- thing_id (Primärschlüssel)
Australische Staaten
- State_id (Primärschlüssel)
- Staatsname
Things_to_Auz_States
- thing_id (Primärschlüssel, Fremdschlüssel zu
THINGS
Tabelle) - State_id (Primärschlüssel, Fremdschlüssel zu
AUSTRALIAN_STATES
Tabelle)
Sie benötigen JOINs, um Daten aus den drei Tabellen zu erhalten, aber wenn Sie wissen möchten, wie viele mit einem bestimmten Status oder zwei bestimmten Status verknüpft sind, ist dies das richtige Modell.