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.

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;

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

„CHAR_LENGTH” nie jest rozpoznawaną nazwą funkcji wbudowanej. Mam do czynienia z tym błędem
Anurag,

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.