String sortieren
Jo
- datenbank
Hallo,
ich habe eine Hausnummernsuche nach Straßenschlüssel (strid) aus einer PostgreSQL-Datenbank:
SELECT * FROM hausnummern WHERE strid = %s ORDER BY hnr ASC
Die Hausnummern sind als string in der Datenbank abgelegt, da es ja neben den Nummern auch Bezeichnungen wie 32a oder 20/21 gibt.
Jetzt möchte ich bei der Ausgabe das ergebnis korrekt sortieren.
Mit "hnr ASC" entstehen Ausgaben wie das hier:
1 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 44 45 46 47 48 49 50 51 52 10a 27a 44a 43/39
Z.B die Nummern 10a und 43/39 werden in der Folge nicht korrekt einsortiert.
Wie kann ich das erreichen?
Danke
Jo
Hi Jo,
SELECT * FROM hausnummern WHERE strid = %s ORDER BY hnr ASC
Z.B die Nummern 10a und 43/39 werden in der Folge nicht korrekt einsortiert.
Wie kann ich das erreichen?
am einfachsten ist es wenn du die Hausnummern in einen INT umwandelst.
Ungetestet: order by regexp_replace(hnr,'[^0-9]','','g')::int
Ein Teil der Sortierung geht natürlich dadurch verloren. 10a / 10b usw. Mir fällt aber keine Möglichkeit ein wie das sinnvoll und performant gelöst werden kann.
HTH
Jochen
Hello,
siehe http://forum.de.selfhtml.org/archiv/2009/3/t184979/#m1226752
Liebe Grüße aus dem Cyberspace
Tom vom Berg