MySQL: Thứ tự theo kích thước / độ dài trường


89

Đây là cấu trúc bảng (ví dụ: kiểm tra):

 __________________________________________
| Field Name     | Data Type               |                 
|________________|_________________________|                 
|    id          |   BIGINT (20)           |                 
|________________|_________________________|                 
|    title       |   varchar(25)           |                 
|________________|_________________________|                 
|    description |   text                  |                 
|________________|_________________________|                 

Một truy vấn như:

SELECT * FROM TEST ORDER BY description DESC;

Nhưng tôi muốn đặt hàng theo kích thước trường / độ dài của mô tả trường. Loại trường sẽ là TEXT hoặc BLOB.

Câu trả lời:


168
SELECT * FROM TEST ORDER BY LENGTH(description) DESC;

Các LENGTHchức năng cung cấp cho chiều dài của chuỗi trong byte. Nếu bạn muốn đếm các ký tự (nhiều byte), hãy sử dụng CHAR_LENGTHhàm thay thế:

SELECT * FROM TEST ORDER BY CHAR_LENGTH(description) DESC;

4
Chỉ để thêm vào câu trả lời: nếu loại là BLOB, bạn có thể sử dụng OCTET_LENGTH(column_name).
mastazi

@mastazi theo tài liệu MySQL: OCTET_LENGTH () là một từ đồng nghĩa với LENGTH ().
Heitor

'CHAR_LENGTH' không phải là tên hàm tích hợp được công nhận. Tôi đang gặp phải lỗi này
Anurag

5
SELECT * FROM TEST ORDER BY CHAR_LENGTH(description);

'CHAR_LENGTH' không phải là tên hàm tích hợp được công nhận. Tôi đang gặp phải lỗi này
Anurag

4

Đối với những người sử dụng MS SQL

SELECT * FROM TEST ORDER BY LEN(field)
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.