Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cách tìm kiếm giá trị được phân tách bằng dấu phẩy

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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tương đương với Cột IDENTITY MSSQL trong MySQL

  2. tạo một ID trong bảng mysql auto_increment (sau thực tế)

  3. Bảng mysql cập nhật Wordpress

  4. PDO Nhiều truy vấn:giao dịch cam kết và khôi phục

  5. Cách tạo cột biến giả cho hàng nghìn danh mục trong Google BigQuery?