Auge: Adressdaten vor der Speicherung filtern

Beitrag lesen

Hallo

Ich stehe vor der Aufgabe, Adressdaten in einer Tabelle einer MS-SQL-Datenbank (SQL Server Express 2008) zu speichern, wobei Teile der möglichen Rohdaten aussortiert werden sollen.

Konkret geht es darum, Hausnummernzusätze zu filtern. Dabei kann es sich um Buchstaben („3 a“) oder z.B. um Aufgangsnummern („4 Aufg. 1“ oder „5 Haus 2“) handeln, aber auch um für mich irrelevante Daten wie Bezeichnungen für Seitenflügel, Gartenhäuser oder Quergebäude und das in unterschiedlichsten Notationen. Auf das Format der Rohdaten bei deren Einlieferung habe ich leider keinen Einfluss, weshalb ich darauf angewiesen bin, mit den vorhandenen Daten umzugehen.

Beim durchforsten der Rohdaten komme ich auf bisher Sage und Schreibe 108 (in Worten: Einhundertundacht) auszusortierende Strings. In PHP würde ich für die auszusortierenden Daten ein Array bilden und die Rohdaten mit !in_array filtern. Wie kann ich soetwas in SQL nachbilden?

Ich kann zwar die zu filternden Strings mit einer Auflistung in IN abgleichen aber spätestens dann, wenn ein Hausnummerzusatz mit einer Kombination aus erlaubtem und zu filterndem Inhalt (z.B. „12 a/Hhs“, a ist erlaubt, /Hhs soll nicht übernommen werden) oder genereller mit mehreren Strings auftaucht, funktioniert das nicht mehr, wie (un)wahrscheinlich es auch sein mag, dass dieser Fall eintritt. Der String würde dann mit einem unerlaubten Wert verschiedener möglicher Längen enden. Ich weiß nicht, ob es eine gute Idee ist, das in SQL mit (momentan) 108 möglichen Werten durchzutesten (Länge des Vergleichswerts bestimmen, Substring vom Ende der Rohdatenwerts abschneiden und den mit dem Vergleichswert vergleichen). Geht das einfacher?

Den Aufwand für nachträgliche Datenpflege möchte ich zumindest niedrig halten.

Tschö, Auge

--
Wenn man ausreichende Vorsichtsmaßnahmen trifft, muss man keine Vorsichtsmaßnahmen mehr treffen.
Toller Dampf voraus von Terry Pratchett