Sử dụng HAVING LENGTH(column) < value sau GROUP BY LENGTH(column) để lọc nhóm theo độ dài chuỗi.
Tạo bảng và dữ liệu
mysql> CREATE TABLE DemoTable(Title TEXT);
Query OK, 0 rows affected (0.39 sec)
mysql> INSERT INTO DemoTable VALUES
('Introduction to MySQL'), ('Introduction to Java'), ('Introduction to SQL'),
('Introduction to Python'), ('Introduction to SQL'), ('Introduction to Java');
Query OK, 6 rows affected
Gom nhóm theo độ dài và lọc < 21 ký tự
mysql> SELECT * FROM DemoTable GROUP BY LENGTH(Title) HAVING LENGTH(Title) < 21;
Kết quả:
+----------------------+ | Title | +----------------------+ | Introduction to SQL | | Introduction to Java | +----------------------+
Giải thích:
LENGTH('Introduction to SQL')= 20 ký tựLENGTH('Introduction to Java')= 20 ký tựLENGTH('Introduction to MySQL')= 21 ký tự (≥ 21, bị lọc)LENGTH('Introduction to Python')= 22 ký tự (≥ 21, bị lọc)
Lưu ý: GROUP BY LENGTH(Title) gom các hàng có cùng độ dài. Nếu có nhiều hàng cùng độ dài, MySQL chọn 1 hàng đại diện (không xác định nào trừ khi có ORDER BY).
Cách tốt hơn (không gom nhóm): SELECT * FROM DemoTable WHERE LENGTH(Title) < 21; (trả về tất cả hàng thỏa mãn, không gom nhóm).