Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Analysieren Sie verwendbare Straßenadresse, Stadt, Bundesland, Postleitzahl aus einer Zeichenfolge

Ich habe viel Arbeit an dieser Art von Parsing geleistet. Da es Fehler gibt, erhalten Sie keine 100%ige Genauigkeit, aber es gibt ein paar Dinge, die Sie tun können, um den größten Teil des Weges dorthin zu bringen, und dann einen visuellen BS-Test durchführen. Hier ist die allgemeine Vorgehensweise. Es ist kein Code, weil es ziemlich akademisch ist, es zu schreiben, es gibt keine Verrücktheit, nur eine Menge String-Handhabung.

(Da Sie nun einige Beispieldaten gepostet haben, habe ich einige kleinere Änderungen vorgenommen)

  1. Arbeiten Sie rückwärts. Beginnen Sie mit der Postleitzahl, die sich am Ende befindet, und in einem von zwei bekannten Formaten:XXXXX oder XXXXX-XXXX. Wenn dies nicht angezeigt wird, können Sie davon ausgehen, dass Sie sich im Bereich Stadt, Staat unten befinden.
  2. Das nächste Ding vor der ZIP-Datei wird der Staat sein, und zwar entweder im Zwei-Buchstaben-Format oder als Wörter. Sie wissen auch, welche das sein werden – es gibt nur 50 davon. Außerdem könnten Sie die Wörter klingen lassen, um Rechtschreibfehler zu kompensieren.
  3. davor ist die Stadt, und es ist wahrscheinlich auf der gleichen Linie wie der Staat. Sie könnten eine Postleitzahlen-Datenbank verwenden um die Stadt und das Bundesland anhand der Postleitzahl zu überprüfen oder es zumindest als BS-Detektor zu verwenden.
  4. Die Straßenadresse besteht im Allgemeinen aus einer oder zwei Zeilen. Die zweite Zeile ist im Allgemeinen die Zimmernummer, falls vorhanden, aber es könnte auch ein Postfach sein.
  5. Es wird nahezu unmöglich sein, einen Namen in der ersten oder zweiten Zeile zu erkennen, aber wenn ihm keine Nummer vorangestellt ist (oder wenn ihm ein "attn:" oder "attention to:" vorangestellt ist, könnte es Ihnen passieren ein Hinweis darauf, ob es sich um eine Namens- oder eine Adresszeile handelt.

Ich hoffe, das hilft etwas.