Đếm số lần xuất hiện giá trị trong chuỗi phân tách bằng dấu phẩy
MySQL cung cấp hàm FIND_IN_SET() để tìm kiếm giá trị trong chuỗi phân tách bằng dấu phẩy, kết hợp với COUNT(*) để đếm số hàng chứa giá trị đó.
1. Tạo bảng và chèn dữ liệu
mysql> CREATE TABLE DemoTable (
Value VARCHAR(100)
);
Chèn các chuỗi giá trị:
mysql> INSERT INTO DemoTable VALUES ('10,20,60,80');
mysql> INSERT INTO DemoTable VALUES ('60,70,90');
mysql> INSERT INTO DemoTable VALUES ('50,55,65,60');
mysql> INSERT INTO DemoTable VALUES ('90,98,97');
2. Xem dữ liệu
mysql> SELECT * FROM DemoTable;
Kết quả:
+-------------+ | Value | +-------------+ | 10,20,60,80 | | 60,70,90 | | 50,55,65,60 | | 90,98,97 | +-------------+
3. Truy vấn đếm số hàng chứa giá trị '60'
mysql> SELECT COUNT(*) FROM DemoTable
WHERE FIND_IN_SET('60', Value) > 0;
4. Kết quả
+----------+ | COUNT(*) | +----------+ | 3 | +----------+
Giải thích: Hàm FIND_IN_SET('60', Value) trả về vị trí của '60' trong chuỗi Value (bắt đầu từ 1), trả về 0 nếu không tìm thấy. Có 3 hàng chứa giá trị 60: hàng 1, 2 và 3.
Lưu ý: FIND_IN_SET chỉ hoạt động chính xác khi chuỗi không có khoảng trắng sau dấu phẩy. Nếu dữ liệu có dạng '10, 20, 60' (có khoảng trắng), cần dùng REPLACE(Value, ' ', '') trước khi tìm kiếm.