MySQL: упорядочить по размеру / длине поля

89

Вот структура таблицы (например, test):

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

Запрос вроде:

SELECT * FROM TEST ORDER BY description DESC;

Но я бы хотел упорядочить по размеру поля / длине описания поля. Тип поля будет ТЕКСТ или BLOB.

Сади
источник

Ответы:

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

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

SELECT * FROM TEST ORDER BY CHAR_LENGTH(description) DESC;
Жоао Силва
источник
4
Просто добавлю к ответу: если тип BLOB, вы можете использовать OCTET_LENGTH(column_name).
mastazi
@mastazi согласно документации MySQL: OCTET_LENGTH () является синонимом LENGTH ().
Heitor
«CHAR_LENGTH» не является распознанным именем встроенной функции. Я столкнулся с этой ошибкой
Anurag
5
SELECT * FROM TEST ORDER BY CHAR_LENGTH(description);
Майк Шеров
источник
«CHAR_LENGTH» не является распознанным именем встроенной функции. Я столкнулся с этой ошибкой
Anurag
4

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

SELECT * FROM TEST ORDER BY LEN(field)
mfrederick
источник