mikra5: Mysql - ORDER BY

Hi,

ich möchte Zahlen wie z.B.: 1, 10, 12, 20, 20a, 20b, 20c "richtig" sortiert ausgeben. Dieses Feld ist Varchar! Der Befehl: ... Order by Feld *1 ergibt immerhin die "richtige" Ausgabe bis auf die Zahlen mit den Buchstaben dahinter; die werden nicht in der Reihenfolge a,b,c,d ausgegeben. Gibt es dafür eine Lösung?

Danke

  1. Hallo,

    • separiere den numerischen Teil vom nicht numerischen
    • multipliziere den numerischen Teil mit z.b. 100
    • wandle den nicht-numerischen Teil in ein numerisches Äquivalent um (z.b. a in 1 oder 65, b in 2 oder 66)
    • addiere dann beide Werte wieder zusammen und sortiere danach

    also ... um beim Bleistift zu bleiben:
    1 wird zu 100
    ** 1c wird dann zu 167 ** was immer noch kleiner wäre als 2 * 100
    10 wird zu 1000
    12 wird zu 1200
    20 wird zu 2000
    20a wird zu 2065
    20b wird zu 2066

    Die Funktionen von MySQL zum Zerlegen und Konvertieren von Strings sind dir bekannt? Wenn nicht schon, dann sicherlich nach dem Studieren des Handbuchs. Und Ausprobieren nicht vergessen ;)

    Cheers
    Frank