Hausnummer aus der Straße...

Faabris

Benutzer
Beiträge
14
Hallo SQLer
Wie leider häufig der Fall ist, haben wir in der Tabelle Adresse auf der Spalte Straße, die Hausnummer auch mitgeliefert.

Das Attribut ist wie Folgendes befüllt:
1 Feldstrasse
• 1. Feldstrasse 12
• Feldstrasse 11
• Feldstrasse 102 Herzwolde
• 125 Morgen Weg 13 (125 Morgen Weg ist Straßen Name)
• 3-k-weg 24 (3-k-weg ist Straßen Name)
F12 Birkwitz-weg
• Birken-weg 12B
• L11 18 (die Straße L11 liegt in Mannheim)
• 117ER Ehrenhof
• 18.-Maerz-Strasse
Und noch weitere Fälle.

Nun meine Herausforderung ist aus der Spalte Straße die Hausnr. raus selektieren.
Kann jemand mir bitte helfen?

Danke und VG
Faabi
 
Werbung:
Schon das Beispiel Mannheim (siehe Quadratestadt – Wikipedia ) zeigt, wie komplex das sein kann. Ich glaube nicht, dass das machbar ist für einen grossen Datenbestand, zumindest wenn man eine hohe bis sehr hohe Quote an Richtigkeit anstrebt?

Aber grundsätzlich sind regular expressions Dein Freund.
 
Vermutlich wirst Du keinen zuverlässigen Weg finden. Wenn Du wirklich jetzt, nachträglich, das auseinanderpflücken willst, dann wäre vielleicht noch eine Idee, sich eine Liste der Straßennamen der Städte zu besorgen, ohne die Hausnummern. Ich denke da in Richtung OpenStreetmap. Dann könntest Du schauen, was darauf matcht, und aus dem Matsch, den Du jetzt hast, die Straße rausnehmen und den Rest als Hausnummer interpretieren. Aber vermutlich wird auch das nicht zu 100% funktionieren.

Habt ihr Azubis, und über wie viele Datensätze reden wir?
 
Vermutlich wirst Du keinen zuverlässigen Weg finden. Wenn Du wirklich jetzt, nachträglich, das auseinanderpflücken willst, dann wäre vielleicht noch eine Idee, sich eine Liste der Straßennamen der Städte zu besorgen, ohne die Hausnummern. Ich denke da in Richtung OpenStreetmap. Dann könntest Du schauen, was darauf matcht, und aus dem Matsch, den Du jetzt hast, die Straße rausnehmen und den Rest als Hausnummer interpretieren. Aber vermutlich wird auch das nicht zu 100% funktionieren.

Habt ihr Azubis, und über wie viele Datensätze reden wir?


danke für die Hilfe.
count 474 404
 
Also ich würde sagen das ist erstmal recht simpel. In Deutschland werden wohl in 99%+ Fällen keine Ziffern im Straßennamen auftauchen. Also hast du mit sowas hier:
Code:
SELECT (CASE WHEN strassehausnr LIKE '%[1-9]%' THEN rtrim(left(strassehausnr,patindex('%[1-9]%',strassehausnr)-1)) ELSE strassehausnr END) AS strasse,
(CASE WHEN strassehausnr LIKE '%[1-9]%' THEN right(strassehausnr,datalength(strassehaunr)-patindex('%[1-9]%',strassehausnr)+1) ELSE NULL END) AS hausnr
FROM tabelle
schonmal das Grobe erschlagen. Natürlich kann man sich dann noch behelfen, z.B. in dem man bekannte Fälle wie Straße = L11 vorher handhabt. Schwieriger finde ich eher Zusätze die eventuell hinter der Hausnummer noch kommen ("Wohnung 1" oder "1. Stock") die gehören da eigentlich nicht so recht hin. Aber man kann eine Kontrolle machen z.B. bei Datensätzen in denen Hausnr mehr als einen Buchstaben enthält.
 
Ich würde vorschlagen Ukuleles Abfrage für eine View auf das Strassennamenfeld zu verwenden und die View HausNr zu nennen. Dann kannst Du sehr schnell via Sichtkontrolle überschlagen ob Du an alle Hausnummern dran gekommen bist und falls nicht kannst Du die Abfrage deiner View nach und nach optimieren. Für die wenigen Fälle die übrig bleiben, solltest
Du die Hausnnr Daten im Strassenfeld
korrigieren.

Wenn dann alles stimmt, frage die Hausnr. nur noch über deine View ab und am besten sorgst Du per Trigger dafür, dass die User künftig keine fehlformatierten Daten mehr eingeben können..
 
Also ich würde sagen das ist erstmal recht simpel. In Deutschland werden wohl in 99%+ Fällen keine Ziffern im Straßennamen auftauchen. Also hast du mit sowas hier:
Code:
SELECT (CASE WHEN strassehausnr LIKE '%[1-9]%' THEN rtrim(left(strassehausnr,patindex('%[1-9]%',strassehausnr)-1)) ELSE strassehausnr END) AS strasse,
(CASE WHEN strassehausnr LIKE '%[1-9]%' THEN right(strassehausnr,datalength(strassehaunr)-patindex('%[1-9]%',strassehausnr)+1) ELSE NULL END) AS hausnr
FROM tabelle
schonmal das Grobe erschlagen. Natürlich kann man sich dann noch behelfen, z.B. in dem man bekannte Fälle wie Straße = L11 vorher handhabt. Schwieriger finde ich eher Zusätze die eventuell hinter der Hausnummer noch kommen ("Wohnung 1" oder "1. Stock") die gehören da eigentlich nicht so recht hin. Aber man kann eine Kontrolle machen z.B. bei Datensätzen in denen Hausnr mehr als einen Buchstaben enthält.

Moin ukulele,
danke für die Hilfe.
es hat mir geholfen :)
VG
 
Werbung:
Ich würde vorschlagen Ukuleles Abfrage für eine View auf das Strassennamenfeld zu verwenden und die View HausNr zu nennen. Dann kannst Du sehr schnell via Sichtkontrolle überschlagen ob Du an alle Hausnummern dran gekommen bist und falls nicht kannst Du die Abfrage deiner View nach und nach optimieren. Für die wenigen Fälle die übrig bleiben, solltest
Du die Hausnnr Daten im Strassenfeld
korrigieren.

Wenn dann alles stimmt, frage die Hausnr. nur noch über deine View ab und am besten sorgst Du per Trigger dafür, dass die User künftig keine fehlformatierten Daten mehr eingeben können..

Hi Dravion,
danke, das muss ich auch Probieren :)
VG
 
Zurück
Oben