MySQL: ordenar por tamanho / comprimento do campo

89

Aqui está uma estrutura de tabela (por exemplo, teste):

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

Uma consulta como:

SELECT * FROM TEST ORDER BY description DESC;

Mas eu gostaria de ordenar pelo tamanho / comprimento do campo da descrição do campo. O tipo de campo será TEXT ou BLOB.

Sadi
fonte

Respostas:

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

A LENGTHfunção fornece o comprimento da string em bytes. Se você quiser contar caracteres (multibyte), use a CHAR_LENGTHfunção:

SELECT * FROM TEST ORDER BY CHAR_LENGTH(description) DESC;
João silva
fonte
4
Só para acrescentar a resposta: se o tipo for BLOB, você pode usar OCTET_LENGTH(column_name).
mastazi
@mastazi de acordo com a documentação do MySQL: OCTET_LENGTH () é um sinônimo para LENGTH ().
Heitor
'CHAR_LENGTH' não é um nome de função integrado reconhecido. Estou enfrentando este erro
Anurag
5
SELECT * FROM TEST ORDER BY CHAR_LENGTH(description);
Mike Sherov
fonte
'CHAR_LENGTH' não é um nome de função integrado reconhecido. Estou enfrentando este erro
Anurag
4

Para aqueles que usam MS SQL

SELECT * FROM TEST ORDER BY LEN(field)
mfrederick
fonte