Jo: String sortieren

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

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

    --
    Kritzeln statt texten: Scribbleboard
  2. Hello,

    siehe http://forum.de.selfhtml.org/archiv/2009/3/t184979/#m1226752

    Liebe Grüße aus dem Cyberspace

    Tom vom Berg

    --
    Nur selber lernen macht schlau
    http://bergpost.annerschbarrich.de