ich suche eine Möglichkeit meine ganz einfache SELECT zu sortieren, so dass am Ende die Reihenfolge natürlich ist.
Wenn ich ein ORDER BY mache, kommt nämlich das hier bei raus:
da die Sortierung als “Text” stattfindet, und da ist “10” eben kleiner als “2”. Eine andere Möglichkeit wäre, die Zahlen in ein separates Feld zu packen.
Wenn der Aufbau immer ähnlich ist, kann man natürlich Text und Zahl mit einer Funktion trennen und dann sortieren.
Da gibt es nicht viel hinzuzufügen …
Der beste Weg wäre wirklich, die Hausnummer in eingetrenntes Feld zu packen (aber dort auch als Text hinterlegen, es gibt zu viele Sonderfälle).
Danke für die Antwort. Das was ich hier geschrieben habe, war ein Beispiel.
Eigentlich (hätte ich auch gleich schreiben können ) habe ich zwei Tabellen:
table adress_values
int id
int fid
varchar value
table adress_fields
int fid
varchar description
SELECT value FROM adress_values WHERE fid = 'strasse' ORDER BY value;
Die Abfrage ist eigentlich ok. Aber wenn ich beispielsweise nach Hausnummern sortiere, dann ist ist die Reihefolge bspw.:
Hausnummer:
1
2
212
23
245
299
3
32
4
5
usw.
Was mache ich falsch bzw. wie könnte man das lösen!
Welche Version? regexp_replace ist etwas neu, seit 8.1 oder so erst. Das DESC oder ASC käme einfach nach dem Cast-Operator, mit Leerzeichen, is klar, oder?
Ups, ich glaube ich bin hier falsch. Sorry, denn ich benutze MySQL. Ich dachte, das ist egal. Bin eben ein Einstieger was SQL anbelangt. Hm.
Trotzdem vielleicht noch einen Tipp, was ich da machen könnte?
MySQL kann IMHO nicht nach dem Resultat einer Funktion sortieren. Oder doch? Ich weiß nicht. Schau einfach in die Doku zu MySQL, was es da an Stringfunktionen gibt, und probier es. Es gibt halt Dinge, die ich nicht gern anfasse: Kot, Windows, MySQL gehören dazu.
Das würde bedeuten, das Mysql Texte addieren kann … und dann auch noch falsch addiert. Wenn man überhaupt irgendwas (einen Text mit Nummern drin) in Zahlen umwandeln will, bricht man ab, sobald man irgendetwas findet, was nicht 0-9 entspricht. Bei dir kommt der Straßenname aber vor der Zahl …
Hab das mal getestet (MySQL - 5.0.22) und bei mir funktioniert es nicht. Kommt zwar keine Fehlermeldung o. ä., aber die Sortierreihenfolge stimmt auch nicht.