Мне нужно преобразовать данные из электронной таблицы в операторы вставки в SQL.Я разработал большинство регулярных выражений для использования инструмента поиска и замены в SSMS, но у меня возникла проблема при попытке сослаться на 9-й элемент в скобках в моей последней замене.
Вотисходная запись:
Blue Doe 12/21/1967 1126 Queens Highway Torrance CA 90802 N 1/1/2012
И это то, что мне нужно (на данный момент):
select 'Blue','Doe','19671221','1126 Queens Highway','Torrance','CA','90802','N','20120101'
Из-за ограничений на количество разрешенных в скобках элементов, я должен пройти через три заменыраз.Это может работать в хранимой процедуре, если я смогу сначала заставить эту работу работать как POC.
Это первое соответствующее выражение:
^{:w:b:w:b}{:z}/{:z}/{:z:b[0-9A-Za-z:b]+:b:w:b[A-Z]+:b:z:b:w:b}{:z}/{:z}/{:z}
И замена: \10\2/0\3/\40\5/0\6/\7
Это добавляет нули к месяцам и дням, чтобы они имели как минимум два символа.
При следующем совпадении даты переформатируются в формат, требуемый в запросе (без комментариев о том, что поле даты не используется.Это требование клиента для базы данных).
Соответствующее выражение:
^{:w:b:w:b}[0-9]*{[0-9]^2}/[0-9]*{[0-9]^2}/{:z}{:b[0-9A-Za-z:b]+:b:w:b[A-Z]+:b:z:b:w:b}[0-9]*{[0-9]^2}/[0-9]*{[0-9]^2}/{:z}
И замена: \1\4\(2,2)\(2,3)\5\8\(2,6)\(2,7)
Наконец, при окончательном совпадении результаты вставляются воператор SQL, который будет использоваться в операторе вставки.
Соответствующее выражение:
^{:w}:b{:w}:b{:z}:b{[0-9A-Za-z:b]+}:b{:w}:b{[A-Z]+}:b{:z}:b{:w}:b{:z}
И замена: select '\1','\2','\3','\4','\5','\6','\7','\8','\9'
Все это работает, кроме последней замены,По какой-то причине \ 9 НЕ получает данные из матча.Если я просто заменю все выражение замены на \ 9, я получу пробел.Если я использую \ 8, я получу N. Если я исключу 8-й элемент, заключенный в скобки, и, таким образом, мой 9-й элемент станет восьмым, он вернет то, что я хочу, 20120101.
Итак, мой вопрос: допускает ли SSMS / SQL9 теговых выражений при использовании поиска / замены и регулярных выражений?Или я что-то здесь упускаю?Я знаю, что есть и другие способы сделать это.Я просто пытаюсь сделать это быстро как POC прежде, чем мы переместим это в sproc или приложение.
Спасибо за любую помощь.-Питер