MySQL: Reihenfolge nach Feldgröße / Länge

86

Hier ist eine Tabellenstruktur (zB Test):

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

Eine Abfrage wie:

SELECT * FROM TEST ORDER BY description DESC;

Ich möchte aber nach Feldgröße / Länge der Feldbeschreibung bestellen . Der Feldtyp ist TEXT oder BLOB.

Sadi
quelle

Antworten:

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

Die LENGTHFunktion gibt die Länge der Zeichenfolge in Bytes an. Wenn Sie (Mehrbyte-) Zeichen zählen möchten, verwenden Sie CHAR_LENGTHstattdessen die folgende Funktion:

SELECT * FROM TEST ORDER BY CHAR_LENGTH(description) DESC;
João Silva
quelle
2
Nur um die Antwort zu ergänzen: Wenn der Typ BLOB ist, können Sie verwenden OCTET_LENGTH(column_name).
Mastazi
@mastazi laut MySQL-Dokumentation: OCTET_LENGTH () ist ein Synonym für LENGTH ().
Heitor
'CHAR_LENGTH' ist kein anerkannter integrierter Funktionsname. Ich bin mit diesem Fehler konfrontiert
Anurag
5
SELECT * FROM TEST ORDER BY CHAR_LENGTH(description);
Mike Sherov
quelle
'CHAR_LENGTH' ist kein anerkannter integrierter Funktionsname. Ich bin mit diesem Fehler konfrontiert
Anurag
4

Für diejenigen, die MS SQL verwenden

SELECT * FROM TEST ORDER BY LEN(field)
mfrederick
quelle