MySQL: ordina per dimensione / lunghezza del campo


90

Ecco una struttura della tabella (ad esempio test):

Nome campo Tipo di dati
id GRANDE (20)
titolo varchar (25)
Descrizione Testo

Una query come:

SELECT * FROM TEST ORDER BY description DESC;

Ma vorrei ordinare in base alla dimensione / lunghezza del campo della descrizione del campo.

Il tipo di campo sarà TEXT o BLOB.

Risposte:


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

La LENGTHfunzione fornisce la lunghezza della stringa in byte. Se vuoi contare i caratteri (multibyte), usa CHAR_LENGTHinvece la funzione:

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

4
Giusto per aggiungere alla risposta: se il tipo è BLOB, puoi usare OCTET_LENGTH(column_name).
mastazi

@mastazi secondo la documentazione di MySQL: OCTET_LENGTH () è un sinonimo di LENGTH ().
Heitor

"CHAR_LENGTH" non è un nome di funzione integrato riconosciuto. Sto affrontando questo errore
Anurag

5
SELECT * FROM TEST ORDER BY CHAR_LENGTH(description);

"CHAR_LENGTH" non è un nome di funzione integrato riconosciuto. Sto affrontando questo errore
Anurag

5

Per coloro che utilizzano MS SQL

SELECT * FROM TEST ORDER BY LEN(field)
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.