Để đếm số lần xuất hiện của một ký tự (ví dụ: dấu phẩy ',') trong chuỗi, dùng công thức: độ dài chuỗi gốc - độ dài chuỗi sau khi xóa ký tự đó.
Công thức
SELECT LENGTH(cot) - LENGTH(REPLACE(cot, ',', '')) AS so_dau_phay FROM ten_bang;
LENGTH(cot): độ dài byte của chuỗi gốc.REPLACE(cot, ',', ''): chuỗi sau khi xóa tất cả dấu phẩy.- Hiệu số = số dấu phẩy (vì mỗi dấu phẩy 1 byte).
Ví dụ minh họa
mysql> CREATE TABLE DemoTable1510 (Value VARCHAR(50));
mysql> INSERT INTO DemoTable1510 VALUES ('20,35'), ('45,67,89'), ('90,97,101,190');
mysql> SELECT Value,
-> LENGTH(Value) - LENGTH(REPLACE(Value, ',', '')) AS NumberOfComma
-> FROM DemoTable1510;
Kết quả:
+---------------+---------------+ | Value | NumberOfComma | +---------------+---------------+ | 20,35 | 1 | | 45,67,89 | 2 | | 90,97,101,190 | 3 | +---------------+---------------+
Mở rộng
- Đếm ký tự đa byte (UTF-8): dùng
CHAR_LENGTH()thayLENGTH(). - Đếm chuỗi con dài > 1 ký tự:
(LENGTH(cot) - LENGTH(REPLACE(cot, 'chuoi_con', ''))) / LENGTH('chuoi_con'). - MySQL 8.0+: dùng
REGEXP_COUNT(cot, ',')(hiệu năng tốt hơn trên chuỗi lớn).
Ứng dụng
- Kiểm tra định dạng CSV: số cột = số dấu phẩy + 1.
- Phân tích dữ liệu thô: đếm phân cách trong cột text.
- Validate: từ chối hàng có số dấu phẩy không đúng quy chuẩn.