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.

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;

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

'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)
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.