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

Triển khai HAVING LENGTH(field) trong MySQL

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).