ORDER BY .... Strassennummer!!!

Ciao zusammen,

ich habe eine Kundentabelle mit Kundendaten.

Manche Kunden leben in der selben Strasse aber mit unterschiedlichen Hausnummern.

Beim Order by muckt mein SQL immer rum, weil manche Hausnummer auch CHAR beinhalten.

kleines Beispiel zu den Daten


Strasse Hausnummer


Hauptstrasse 1
Hauptstrasse 20c
Hauptstrasse 10
Hauptstrasse 2
Hauptstrasse 10a


gibt es eine Möglichkeit die ORDER BY Clause so umzucshreiben, so dass er aus der Spalte Hausnummer eine vernünftige Struktur reinbringt. So dass das Ergebnis so ausschaut?


Strasse Hausnummer


Hauptstrasse 1
Hauptstrasse 2
Hauptstrasse 10
Hauptstrasse 10a
Hauptstrasse 20c



danke im voraus für denkanstösse

Du kannst dir eine eigene Funktion zum Sortieren schreiben …



test=*# select nr from haus;
 nr
-----
 10
 1
 1b
 1a
 1c
 23b
 5
(7 rows)

test=*# select nr from haus order by regexp_replace(nr, '[^0-9]','')::numeric, nr;
 nr
-----
 1
 1a
 1b
 1c
 5
 10
 23b
(7 rows)

Andreas

unglaublich dieses forum hier…
geht zack zack hier…


vielen dank und ein schönes wochenende :wink:

ullrich

ein kollege hat mich gefragt, wie das wohl mit teradata sql oder ansi ausschaut…


Irgendwelche Ideen?

cast(substrin(numeric … o.ä

Natürlich. Frage in einem passenden Forum :wink:

Andreas

Nein, richtig wäre: das wird in jeder Datenbank funktionieren, wenn ihr die Daten aufbereitet und normalisiert. In dem Fall also eine Spalte für die Hausnummer und eine für den Zusatz.

das wäre natürlich der idealfall… aber bei 4.434.291 Zeilen überlegst du dir das 2 mal :wink:

Dann erst Recht! Alle anderen Lösungen sind nur langsamer als die normalisierte Darstellung.

du hast sicherlich recht ads… aber versuche dem kunden mal zu erzählen, dass du mehrarbeit machen musst, die auch noch bezahlt werden muss, um die performance zu erreichen… hmmm…

das wird wieder eine mega diskussion auslösen… mehrarbeit --> mehrkosten --> “neues umfeld” für den kunden --> neue spalten in einer Tabelle (ooooohhh, da muss ich ja wieder neu aufpassen, all so ein kram wird aufkommen)

Ja, Moment mal, der Kunde will mehr Performance ohne weitere Kosten?

Wie jetzt - Märchenland :wink:

Warum muß ich jetzt an dies denken:

Anstrengungsloser Wohlstand - spätrömische Dekadenz


Andreas

alles was kostet ist mit vorsicht zu geniessen…

wenn man bedenkt was für tagessätze manche firmen zahlen ist das auch legitim.

.o0( Also dürfen wir hier kostenlos die Probleme lösen, damit die Firmen weiter ihr Geld verdienen? )

die meisten hier arbeiten doch für irgendwelche firmen im it bereich?!!? zumindest sollte man das talent auch anwenden und asche dafür verlangen! sei es freiberuflich oder angestellt.
es ist doch offensichtlich, dass manche firmen keine fachkräfte haben… und daher auf “dienstleister” zurückgreifen müssen…

Ja, ich schicke Dir dann eine Rechnung, okay? Wohin?

Andreas

ritz carlton auf den bahamas :wink: