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

Tìm vị trí giá trị cột trong chuỗi phân cách dấu phẩy với FIND_IN_SET MySQL

Hàm FIND_IN_SET(str, strlist) trả về vị trí (1-based) của chuỗi str trong chuỗi danh sách strlist phân cách bằng dấu phẩy. Trả về 0 nếu không tìm thấy.

Ví dụ minh họa

Tạo bảng:

mysql> CREATE TABLE DemoTable1866 (Value1 INT, ListOfValues VARCHAR(100));
mysql> INSERT INTO DemoTable1866 VALUES(56,'78,56,98,95'),(103,'103,90,102,104'),(77,'34,45,77,78');

Tìm vị trí Value1 trong ListOfValues:

mysql> SELECT Value1, ListOfValues, FIND_IN_SET(Value1, ListOfValues) AS Output FROM DemoTable1866;

Kết quả:

+--------+----------------+--------+
| Value1 | ListOfValues   | Output |
+--------+----------------+--------+
|     56 | 78,56,98,95    |      2 |
|    103 | 103,90,102,104 |      1 |
|     77 | 34,45,77,78    |      3 |
+--------+----------------+--------+

Lưu ý: FIND_IN_SET không dùng index, chậm trên bảng lớn. Thiết kế chuẩn hóa (bảng riêng) tốt hơn cho hiệu suất.