2010-04-03 21 views
62

Oto struktura tabeli (np test):MySQL: Postanowienie o wielkości pola/długość

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

Zapytanie jak:

SELECT * FROM TEST ORDER BY description DESC; 

Ale chciałbym zamówić przez wielkość pola/length opisu pola. Typ pola to TEKST lub BLOB.

Odpowiedz

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

Funkcja LENGTH podaje długość łańcucha w bajtach. Jeśli chcesz się liczyć (Multi-bajtowych) znaków, należy użyć funkcji CHAR_LENGTH Zamiast:

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

Wystarczy dodać do odpowiedzi: jeśli typ jest BLOB, możesz użyć 'OCTET_LENGTH (column_name)'. – mastazi

+0

@mastazi zgodnie z dokumentacją MySQL: OCTET_LENGTH() jest synonimem LENGTH(). – Heitor

+0

"CHAR_LENGTH" nie jest rozpoznawaną wbudowaną nazwą funkcji. Mam do czynienia z tym błędem – Anurag

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

"CHAR_LENGTH" nie jest rozpoznawaną wbudowaną nazwą funkcji. Stoję w obliczu tego błędu – Anurag

3

Dla tych, za pomocą MS SQL

SELECT * FROM TEST ORDER BY LEN(field) 
Powiązane problemy