2010-04-03 25 views
62

Aquí es una estructura de la tabla (por ejemplo, prueba):MySQL: Ordenar por tamaño de campo/longitud

__________________________________________ 
| 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 pedir por el tamaño campo/longitud de la descripción del campo. El tipo de campo será TEXTO o BLOB.

Respuesta

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

La función LENGTH da la longitud de cadena en bytes. Si desea contar caracteres (multi-byte), utilice la función CHAR_LENGTH lugar:

SELECT * FROM TEST ORDER BY CHAR_LENGTH(description) DESC; 
+2

Sólo para añadir a la respuesta: si el tipo es BLOB, puedes usar 'OCTET_LENGTH (column_name)'. – mastazi

+0

@mastazi según la documentación de MySQL: OCTET_LENGTH() es un sinónimo de LENGTH(). – Heitor

+0

'CHAR_LENGTH' no es un nombre de función incorporado reconocido. Me enfrento a este error – Anurag

4
SELECT * FROM TEST ORDER BY CHAR_LENGTH(description); 
+0

'CHAR_LENGTH' no es un nombre de función incorporado reconocido. Me enfrento a este error – Anurag

3

Para aquellos que utilizan MS SQL

SELECT * FROM TEST ORDER BY LEN(field)