Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Hausnummer aus Straßennamen extrahieren

998 views
Skip to first unread message

Jörg Harnisch

unread,
Mar 26, 2010, 3:31:42 AM3/26/10
to
Moin NG,

ich habe folgendes Problem: Es gibt eine Tabelle mit Straßennamen komplett.
Nun muss ich für Zensus (statistisches Amt) die Hausnummer in eine separate
Spalte übernehmen.
Mit dem Feld :
SUBSTRING(OBJ_STRASSE, CHARINDEX(' ', OBJ_STRASSE) + 1, LEN(OBJ_STRASSE)) AS
EF210
klappt das bei den meisten. Ich habe aber unterschiedliche Arten der
Bezeichnung.
z.B. :

A.-Bebel-Str. 10
Damaschkestraße 17a
Leipziger Str. 83a

Wie kann ich bei unterschiedlicher Länge und Zeichen davor die Zahl finden
und extrahieren?

Gruß Jörg


Simone

unread,
Mar 26, 2010, 3:47:42 AM3/26/10
to
Hallo,

du kannst hier prüfen, ob das Zeichen an der stelle CHARINDEX(' ',
OBJ_STRASSE) + 1 eine Zahl ist (isnumeric). Ist das der Fall, dann hast
du die Hausnummer. Ist das nicht der Fall, beginnst du an der Stelle mit
der Suche nach ' '

Alternativ kannst du von hinten anfangen mit suchen. Hier mußt du dann
jedoch den Fall 17 a abfangen.

Viele Grüße
Simone


Jörg Harnisch schrieb:

Stefan Dase

unread,
Mar 26, 2010, 4:06:59 AM3/26/10
to
Hallo Jörg!

> ich habe folgendes Problem: Es gibt eine Tabelle mit Straßennamen komplett.
> Nun muss ich für Zensus (statistisches Amt) die Hausnummer in eine separate
> Spalte übernehmen.

>(...)


> Wie kann ich bei unterschiedlicher Länge und Zeichen davor die Zahl finden
> und extrahieren?

Ich hätte dir jetzt die Suche mit regulären Ausdrücke (regular
expressions) empfohlen. Die letzten Jahre habe ich mit der Oracle 11g
gearbeitet, dort werden RegEx-Suchen direkt in PL/SQL unterstützt.

Für den MS SQL-Server scheint es aber keine direkte Möglichkeit in T-SQL
zu geben. Statt dessen propagiert Microsoft die Programmierung mittels
.Net, das seit dem SQL-Server 2005 verwendet werden kann.

Hier findest du eine kurze Einführung in das Thema:
http://msdn.microsoft.com/de-de/magazine/cc163473.aspx. Vielleicht hilft
es dir ein wenig weiter?

Viele Grüße aus Bremen,.
Stefan

Jörg Harnisch

unread,
Mar 26, 2010, 6:09:42 AM3/26/10
to
Hallo NG,

danke für die Hilfe, schönes Wochenende.
Jörg

"Jörg Harnisch" <harn...@wbgwolfen.de> schrieb im Newsbeitrag
news:OvHC8aLz...@TK2MSFTNGP04.phx.gbl...

Harald M. Genauck

unread,
Mar 26, 2010, 7:43:39 AM3/26/10
to
Hallo Jörg,

> ich habe folgendes Problem: Es gibt eine Tabelle mit Straßennamen
> komplett. Nun muss ich für Zensus (statistisches Amt) die Hausnummer
> in eine separate Spalte übernehmen.
> Mit dem Feld :
> SUBSTRING(OBJ_STRASSE, CHARINDEX(' ', OBJ_STRASSE) + 1,
> LEN(OBJ_STRASSE)) AS EF210
> klappt das bei den meisten. Ich habe aber unterschiedliche Arten der
> Bezeichnung.
> z.B. :
>
> A.-Bebel-Str. 10
> Damaschkestraße 17a
> Leipziger Str. 83a

Hoffentlich hat dieses statistische Amt auch Vorschläge zur Behandlung
von Ausnahmen mitgeliefert. Denn es gibt noch einiges an abweichenden
Varianten mehr.

Beispielsweise Mannheimer Innenstadtadressen wie "P1" - also quasi NUR
Hausnummer, ohne Straße
(http://de.wikipedia.org/wiki/Quadratestadt)

Oder so etwas wie "An der B 3" - wobei die "3" ganz klar keine
Hausnummer ist. Oder gar keine Hausnummer, etwa bei einem
Einsiedlerhof u.ä., die nur eine (ggfs. historische) Flurbezeichnung
als "Straßennamen" haben, aber keine Hausnummer, weil er der einzige
an diesem Flecken ist.

Sowohl die Straßen- als auch die Hausnummernspalte müssten daher
NULL-Werte akzeptieren können, oder zumindest schlicht leer sein
können.

Und dann gibt es auch noch so genannte "Bruchteilhausnummern" wie
"Sowiesogasse 3 1/2", Und nicht zu vergessen Adressen über mehrere
Grundstücke/Hausnummern hinweg wie "Ganzweitweg 12-14".

Auch mit solchen Varianten müsste Dein Separationsalgorithmus auch
zurecht kommen können.


Viele Grüße

Harald M. Genauck

"VISUAL STUDIO one" - http://www.visualstudio1.de (Chefredakteur)
"ABOUT Visual Basic" - http://www.aboutvb.de (Hrsg. + Redaktion)

Harald M. Genauck

unread,
Mar 26, 2010, 8:05:44 AM3/26/10
to
PS.:

Es gibt auch noch eine Variante:

"Marktstraße 7, Haus 5" - die Hausnummer ist hier genau genommen "7,
Haus 5".

oder in Industriegebieten nach gleichem Muster:

"Dieselstraße 3, Tor 5" - also ist die Hausnummer "3, Tor 5".

Harald M. Genauck

unread,
Mar 26, 2010, 8:19:37 AM3/26/10
to
PPS.:

Ich persönlich halte eine Trennung von "Straßenname" und "Hausnummer"
für überflüssig. Eine Adresse braucht lediglich eindeutig zu sein -
und das ist sie auch dann, wenn beides zusammen in einem Feld steht.
Auch sortieren lassen sie sich dann noch problemlos.

Probleme liegen sowieso meistens in der korrekten Schreibweise der
"Straßennamen". Abgesehen von Abkürzungen ("str."/"st."/"straße",
"Pl."/"P."/"Platz" usw.) können sogar viele Leute noch nicht mal ihre
eigene Adresse selber richtig schreiben - im Normalfall ist "Kölner
Straße" korrekt, aber nicht "Kölnerstraße" u.ä.

Viele Grüße

Harald M. Genauck

"VISUAL STUDIO one" - http://www.visualstudio1.de (Chefredakteur)
"ABOUT Visual Basic" - http://www.aboutvb.de (Hrsg. + Redaktion)


"Harald M. Genauck" <hmg.ng.e...@aboutvb.de> schrieb im
Newsbeitrag news:e6k2tyNz...@TK2MSFTNGP02.phx.gbl...

Frank Kalis

unread,
Mar 26, 2010, 9:20:18 AM3/26/10
to

Wie wäre es mit: RIGHT(OBJ_STRASSE, CHARINDEX(' ',
REVERSE(OBJ_STRASSE) ) - 1) ? Abhängig von der Qualität Deiner Daten
sollte es funktionieren.
--
Frank Kalis
Microsoft SQL Server MVP
Webmaster: http://www.insidesql.org

Frank Kalis

unread,
Mar 26, 2010, 9:25:14 AM3/26/10
to

...und wenn Du dann noch alle nicht-numerischen Zeichen loswerden
willst, könnte dies interessant sein:
http://www.insidesql.org/beitraege/strings/nichtnumerische-zeichen-aus-einem-string-entfernen

Dieter Strassner

unread,
Mar 27, 2010, 2:51:25 PM3/27/10
to
Hallo Harald,

[...]


> Beispielsweise Mannheimer Innenstadtadressen wie "P1" - also quasi NUR
> Hausnummer, ohne Straße
> (http://de.wikipedia.org/wiki/Quadratestadt)

[...]

...hier ist eine kleine Ungereimtheit in deiner Aussage.

Die Gebäude in den Mannnheimern Quadraten habe sehr wohl extra Hausnummern,
Die korrekte Bezeichnung lautet dann z.B. "S6,1" für Quadarat S6,
Hausnummer 1
Oder "P7,21" für Quadarat P7, Hausnummer 21

--

Viele Grüße aus der Nähe von Mannheim...

Dieter


Rückfragen bitte nur in die Newsgroup!

EDV-Kommunikation Strassner e.K.
68623 Lampertheim
Internet: www.strassner.biz

Harald M. Genauck

unread,
Mar 28, 2010, 7:07:31 AM3/28/10
to
Hallo Dieter,

> [...]
>> Beispielsweise Mannheimer Innenstadtadressen wie "P1" - also quasi
>> NUR
>> Hausnummer, ohne Straße
>> (http://de.wikipedia.org/wiki/Quadratestadt)
>
> [...]

> ...hier ist eine kleine Ungereimtheit in deiner Aussage.
>
> Die Gebäude in den Mannnheimern Quadraten habe sehr wohl extra
> Hausnummern,
> Die korrekte Bezeichnung lautet dann z.B. "S6,1" für Quadarat S6,
> Hausnummer 1
> Oder "P7,21" für Quadarat P7, Hausnummer 21

Hast Recht. :-)

Aber auch diese Form stellt trotzdem eine von einem
Hausnummernextraktionsalgorithmus zu berücksichtigende
Ausnahme/Variante dar.

0 new messages