MySQL: упорядкування за розміром / довжиною поля


89

Ось структура таблиці (наприклад, тест):

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

Такий запит, як:

SELECT * FROM TEST ORDER BY description DESC;

Але я хотів би впорядкувати за розміром поля / довжиною опису поля. Тип поля буде TEXT або BLOB.

Відповіді:


167
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' не є розпізнаною вбудованою назвою функції. Я стикаюся з цією помилкою
Анураг

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

'CHAR_LENGTH' не є розпізнаною вбудованою назвою функції. Я стикаюся з цією помилкою
Анураг

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.