Rozwiązanie krótkoterminowe
Użyj funkcji ZNAJDŹ_IN_SET :
WHERE FIND_IN_SET('Queensland', csv_column)
...ponieważ używanie LIKE z symbolami wieloznacznymi na obu końcach jest ryzykowne, w zależności od tego, ile/mało pasuje (a także zapewnia skanowanie tabeli). Wydajność funkcji LIKE z symbolami wieloznacznymi po obu stronach jest na równi z REGEXP — to oznacza złe.
Rozwiązanie długoterminowe
Nie przechowuj wartości rozdzielanych przecinkami — użyj odpowiedniej relacji wiele-do-wielu obejmującej trzy tabele:
Rzeczy
- thing_id (klucz podstawowy)
Australijskie Stany
- State_id (klucz podstawowy)
- Nazwa_stanu
Rzeczy_do_Auz_States
- thing_id (klucz podstawowy, klucz obcy do
THINGS
stół) - State_id (klucz podstawowy, klucz obcy do
AUSTRALIAN_STATES
stół)
Będziesz potrzebować JOIN, aby uzyskać dane z trzech tabel, ale jeśli chcesz wiedzieć, jak wiele jest powiązanych z konkretnym stanem lub dwoma konkretnymi stanami, to jest to właściwy model.