MySQL: Sortuj według rozmiaru / długości pola

89

Oto struktura tabeli (np. Test):

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

Zapytanie takie jak:

SELECT * FROM TEST ORDER BY description DESC;

Ale chciałbym uporządkować według rozmiaru pola / długości opisu pola. Typ pola to TEKST lub BLOB.

Sadi
źródło

Odpowiedzi:

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

LENGTHFunkcja daje długość sznurka w bajtach. Jeśli chcesz liczyć (wielobajtowe) znaki, użyj CHAR_LENGTHzamiast tego funkcji:

SELECT * FROM TEST ORDER BY CHAR_LENGTH(description) DESC;
João Silva
źródło
4
Wystarczy dodać do odpowiedzi: jeśli typ to BLOB, możesz użyć OCTET_LENGTH(column_name).
mastazi
@mastazi zgodnie z dokumentacją MySQL: OCTET_LENGTH () jest synonimem LENGTH ().
Heitor
„CHAR_LENGTH” nie jest rozpoznawaną nazwą funkcji wbudowanej. Mam do czynienia z tym błędem
Anurag,
5
SELECT * FROM TEST ORDER BY CHAR_LENGTH(description);
Mike Sherov
źródło
„CHAR_LENGTH” nie jest rozpoznawaną nazwą funkcji wbudowanej. Mam do czynienia z tym błędem
Anurag,
4

Dla osób używających MS SQL

SELECT * FROM TEST ORDER BY LEN(field)
mfrederick
źródło