MySQL: Trier par taille / longueur de champ

89

Voici une structure de table (par exemple test):

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

Une requête comme:

SELECT * FROM TEST ORDER BY description DESC;

Mais je voudrais commander par la taille du champ / la longueur de la description du champ. Le type de champ sera TEXT ou BLOB.

Sadi
la source

Réponses:

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

La LENGTHfonction donne la longueur de la chaîne en octets. Si vous souhaitez compter les caractères (multi-octets), utilisez la CHAR_LENGTHfonction à la place:

SELECT * FROM TEST ORDER BY CHAR_LENGTH(description) DESC;
João Silva
la source
4
Juste pour ajouter à la réponse: si le type est BLOB, vous pouvez utiliser OCTET_LENGTH(column_name).
mastazi
@mastazi selon la documentation MySQL: OCTET_LENGTH () est un synonyme de LENGTH ().
Heitor
«CHAR_LENGTH» n'est pas un nom de fonction intégré reconnu. Je suis confronté à cette erreur
Anurag
5
SELECT * FROM TEST ORDER BY CHAR_LENGTH(description);
Mike Sherov
la source
«CHAR_LENGTH» n'est pas un nom de fonction intégré reconnu. Je suis confronté à cette erreur
Anurag
4

Pour ceux qui utilisent MS SQL

SELECT * FROM TEST ORDER BY LEN(field)
mfrederick
la source