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.
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.