MySQL: ordenar por tamaño / longitud de campo

89

Aquí hay una estructura de tabla (por ejemplo, prueba):

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

Una consulta como:

SELECT * FROM TEST ORDER BY description DESC;

Pero me gustaría ordenar por el tamaño / longitud del campo de la descripción del campo. El tipo de campo será TEXTO o BLOB.

Sadi
fuente

Respuestas:

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

La LENGTHfunción da la longitud de la cadena en bytes. Si desea contar caracteres (multibyte), use la CHAR_LENGTHfunción en su lugar:

SELECT * FROM TEST ORDER BY CHAR_LENGTH(description) DESC;
João Silva
fuente
4
Solo para agregar a la respuesta: si el tipo es BLOB, puede usar OCTET_LENGTH(column_name).
mastazi
@mastazi según la documentación de MySQL: OCTET_LENGTH () es un sinónimo de LENGTH ().
Heitor
'CHAR_LENGTH' no es un nombre de función integrado reconocido. Estoy enfrentando este error
Anurag
5
SELECT * FROM TEST ORDER BY CHAR_LENGTH(description);
Mike Sherov
fuente
'CHAR_LENGTH' no es un nombre de función integrado reconocido. Estoy enfrentando este error
Anurag
4

Para aquellos que usan MS SQL

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