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.

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;

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);

'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)
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.