Посмотрите на встроенные функции charindex
, patindex
и substring
.
charindex
находит положение указанного символа, patindex
шаблона, substring
возвращает часть строки по позиции.
Мой совет - написать представление над столбцом таблицы X, в котором используются указанные выше функции для предоставления двух вычисляемых столбцов. Тогда вы могли бы insert into result table select info1, info2 from columnX'stable;
.
По крайней мере вычисляемый столбец info2
будет содержать оператор case для обработки случая, когда в источнике есть только одна «информация» в скобках, что-то вроде этого:
case when [some test using patindex too check for two parenthesized infos]
then [some combination of patidex and substring to extract the second info]
else null;
В частности, patindex возвращает ноль, когда шаблон не найден, так:
patindex('%(%)%(%)%', columnX)
вернет ноль для вашего первого примера, но не ваш второй пример.
Вам также нужно будет рассмотреть, как вы хотите обрабатывать ошибочные данные, в частности: 1) строки без круглых скобок, 2) с неравным числом открытых и закрывающих скобок, 3) с дополнительным текстом между двумя заключенными в скобки «данными», 4 ) с дополнительным текстом после закрывающей скобки.
Я бы рекомендовал вам добавить примеры всех этих возможностей, а также правильно отформатированные столбцы X к вашим тестовым данным, а затем проверить, что представление выполняет то, что вы хотите во всех случаях.