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.

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;

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

«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)
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.