Giải pháp ngắn hạn
Sử dụng Hàm FIND_IN_SET :
WHERE FIND_IN_SET('Queensland', csv_column)
... bởi vì sử dụng LIKE với các ký tự đại diện ở một trong hai đầu là rủi ro, tùy thuộc vào số lượng trùng khớp nhiều / ít (và nó cũng đảm bảo quét bảng). Hiệu suất của LIKE với các ký tự đại diện ở hai bên ngang bằng với REGEXP - điều đó có nghĩa là kém.
Giải pháp dài hạn
Không lưu trữ các giá trị được phân tách bằng dấu phẩy - sử dụng mối quan hệ nhiều-nhiều thích hợp, liên quan đến ba bảng:
Những điều
- thing_id (khóa chính)
Các quốc gia Úc
- State_id (khóa chính)
- State_name
Things_to_Auz_States
- thing_id (khóa chính, khóa ngoại của
THINGS
bảng) - State_id (khóa chính, khóa ngoại của
AUSTRALIAN_STATES
bảng)
Bạn sẽ cần JOIN để lấy dữ liệu ra khỏi ba bảng, nhưng nếu bạn muốn biết những thứ như có bao nhiêu được liên kết với một trạng thái cụ thể hoặc hai trạng thái cụ thể, thì đó là mô hình thích hợp.