2010-04-03 3 views
62

Вот структуру таблицы (например, тест):MySQL: Сортировать по размеру поля/длина

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

запрос типа:

SELECT * FROM TEST ORDER BY description DESC; 

Но я хотел бы заказать по размеру поля/length Описание поля. Тип поля будет TEXT или BLOB.

ответ

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

Функция LENGTH дает длину строки в байтах. Если вы хотите посчитать (многобайтовой) символов, используйте CHAR_LENGTH функцию вместо:

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

Просто, чтобы добавить к ответу: если тип BLOB, вы можете использовать 'OCTET_LENGTH (column_name)'. – mastazi

+0

@mastazi согласно документации MySQL: OCTET_LENGTH() является синонимом для LENGTH(). – Heitor

+0

«CHAR_LENGTH» не является признанным встроенным именем функции. Я столкнулся с этой ошибкой – Anurag

4
SELECT * FROM TEST ORDER BY CHAR_LENGTH(description); 
+0

«CHAR_LENGTH» не является признанным встроенным именем функции. Я столкнулся с этой ошибкой – Anurag

3

Для тех, кто использует MS SQL

SELECT * FROM TEST ORDER BY LEN(field) 
Смежные вопросы