Вы можете заставить свой regexp func возвращать xml. Вместо этого 'text1d','text2','text3'
вы можете построить это <v>text1d</v><v>text2</v><v>text3</v>
.
Вот пример с табличной переменной, имитирующей ваш запрос.
Настройка тестовых данных
declare @T table (txt varchar(50))
insert into @T values ('<v>text1d</v><v>text2</v><v>text3</v>')
insert into @T values ('<v>text3d</v><v>text2</v><v>text6</v>')
insert into @T values ('<v>text1d</v><v>text2</v><v>text6</v>')
insert into @T values ('<v>text18d</v><v>text2</v><v>tex3t</v>')
insert into @T values ('<v>text15</v><v>text2</v><v>text5</v>')
Ваш запрос должен вернуть то, что сейчас находится в @ T
txt
<v>text1d</v><v>text2</v><v>text3</v>
<v>text3d</v><v>text2</v><v>text6</v>
<v>text1d</v><v>text2</v><v>text6</v>
<v>text18d</v><v>text2</v><v>tex3t</v>
<v>text15</v><v>text2</v><v>text5</v>
Вот инструкция вставки, которая запрашивает xml в @ T.txt для столбцов.
insert into Test1 (c1, c2, c3)
select
cast(txt as xml).value('v[1]', 'varchar(20)'),
cast(txt as xml).value('v[2]', 'varchar(20)'),
cast(txt as xml).value('v[3]', 'varchar(20)')
from @T
Запрос к Test1 даст вам этот результат.
c1 c2 c3
text1d text2 text3
text3d text2 text6
text1d text2 text6
text18d text2 tex3t
text15 text2 text5
Полагаю, это тоже ответ на этот вопрос.
Вставить в SQL-сервер из возвращаемого текста регулярного выражения