Mysql: Sortierung von Zahlen als String

Für eine Intranetseite sollte eine Liste aus einer Datenbank ausgegeben werden – sortiert nach einer Inventarnummer. Diese Nummer besteht nicht nur aus Zahlen, sondern kann auch Binde- und Schrägstriche enthalten, weshalb diese Werte als String angelegt wurden. Ruft man jetzt mit einem MySQL-Befehl die Daten auf und lässt diese nach der Inventarnummer sortieren (ORDER BY) werden aber die Zahlen in der Form 1, 10, 100,101, 102 usw. ausgegeben.

Mysql-sort-char-1

Damit die Zahlen korrekt sortiert werden muss man den String in das Verhalten eines Integers zwingen.
Hier 2 Wege:
Der einfachste Weg ist einfach den Feldnamen mit 0 zu addieren
SELECT * FROM <Tabelle> ORDER BY <FeldName>+0
oder man nimmt die Funktion CAST
SELECT * FROM <Tabelle> ORDER BY CAST(<FeldName> AS UNSIGNED INTEGER)
Für welche Variante man sich auch entscheiden mag, das Ergebnis ist eine nummerisch korrekte Sortierung.
Mysql-sort-char-2

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

5 × 1 =