Разбор адреса с помощью T-SQL - PullRequest
1 голос
/ 01 июля 2010

Я пытаюсь выяснить, как анализировать адрес с помощью T-SQL, и я сосу на T-SQL. Моя задача заключается в следующем,

У меня есть таблица с названием Locations, определенная следующим образом:

- City [varchar(100)]
- State [char(2)]
- PostalCode [char(5)]

В моем пользовательском интерфейсе есть текстовое поле, в которое пользователь может ввести адрес. Этот адрес может быть в форме чего угодно (чёрт, я знаю). К сожалению, я также не могу изменить этот интерфейс. В любом случае значение текстового поля передается в хранимую процедуру, которая отвечает за разбор адреса. Мне нужно взять то, что человек вводит, и получить почтовый индекс из таблицы местоположений, связанной с его вводом. Что касается жизни, я не могу понять, как это сделать. Есть так много случаев. Например, пользователь может ввести одно из следующего:

  • Чикаго, Иллинойс
  • Чикаго, Иллинойс 60601
  • Чикаго, Иллинойс, 60601
  • Чикаго, Иллинойс 60601 США
  • Чикаго, Иллинойс, 60601 США
  • Чикаго, Иллинойс 60601, США
  • Нью-Йорк NY 10001 США
  • Нью-Йорк, Нью-Йорк 10001, США

Вы поняли идею. Есть много случаев. Я также не могу найти парсеры онлайн. Я не должен выглядеть правильно. Может кто-нибудь указать мне на парсер онлайн или объяснить, как это сделать? Я готов заплатить за решение этой проблемы, но ничего не могу найти, я в шоке.

1 Ответ

2 голосов
/ 01 июля 2010

Возможно, функция CLR может быть лучшим выбором, чем tsql. Посмотрите http://msdn.microsoft.com/en-us/magazine/cc163473.aspx пример использования регулярных выражений для разбора некоторых довольно сложных строковых входных данных в результаты табличных значений. Теперь вы можете быть настолько креативными, насколько пожелаете, с соответствием регулярному выражению, но следующее регулярное выражение должно помочь вам начать:

(.*?)([A-Z]{2}),? (\d+)( USA)?$

Если вы не хотите использовать функции CLR, возможно, у вас есть функция регулярного выражения в вызывающей системе, например ASP.Net или PHP.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...