Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Tìm kiếm trong chuỗi phân cách bằng dấu phẩy trong MySQL với FIND_IN_SET

Toán tử IN() không hoạt động trên chuỗi chứa nhiều giá trị phân cách. MySQL cung cấp FIND_IN_SET(str, csv_str) để tìm vị trí của str trong chuỗi CSV.

Ví dụ minh họa

Tạo bảng (lưu chuỗi phân cách bằng |):

mysql> CREATE TABLE DemoTable (ListOfValues TEXT);

Chèn dữ liệu:

mysql> INSERT INTO DemoTable VALUES('10|20|30|40|50|60|100');

Xem dữ liệu:

mysql> SELECT * FROM DemoTable;

Kết quả

+-----------------------+
| ListOfValues          |
+-----------------------+
| 10|20|30|40|50|60|100 |
+-----------------------+

Tìm vị trí của 100 (phải thay | thành , vì FIND_IN_SET chỉ hiểu dấu phẩy):

mysql> SELECT FIND_IN_SET(100, REPLACE(ListOfValues, '|', ',')) FROM DemoTable;

Kết quả

+-------------------------------------------------+
| FIND_IN_SET(100, REPLACE(ListOfValues, '|', ',')) |
+-------------------------------------------------+
| 7                                               |
+-------------------------------------------------+

Lưu ý: FIND_IN_SET trả về 0 nếu không tìm thấy. Nó không dùng index, chậm trên bảng lớn. Thiết kế tốt hơn: tách thành bảng liên kết (normalization).