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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.