Sử dụng hàm FIND_IN_SET() để tìm một giá trị trong chuỗi các giá trị cách nhau bởi dấu phẩy (không có khoảng trắng).
Tạo bảng và dữ liệu
mysql> CREATE TABLE DemoTable (
-> ListOfIds VARCHAR(200)
-> );
Query OK, 0 rows affected (0.72 sec)
mysql> INSERT INTO DemoTable VALUES('100,2093,678,686'), ('0595,9585,4885,95959'), ('0059954,95986884,9059596,9005');
Query OK, 3 rows affected (0.12 sec)
Truy vấn tìm hàng chứa '9005'
mysql> SELECT * FROM DemoTable WHERE FIND_IN_SET('9005', ListOfIds);
Kết quả:
+-------------------------------+ | ListOfIds | +-------------------------------+ | 0059954,95986884,9059596,9005 | +-------------------------------+ 1 row in set (0.00 sec)
Lưu ý quan trọng:
FIND_IN_SETyêu cầu chuỗi không có khoảng trắng sau dấu phẩy- Không dùng index, chậm trên bảng lớn
- Thiết kế tốt hơn: bảng riêng cho mối quan hệ many-to-many