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.

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;

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

'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)
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.