SQL Выберите несколько значений в скобках в строке - PullRequest
0 голосов
/ 09 января 2020

У меня есть SQL Строка с полями слияния в строке, заключенная в скобки. Я хотел бы извлечь только поля слияния.

String

Payment Plan of {{ExpectedAmount|11}}. Pay into {{BankName|4}} {{BankAccountNumber|11}} Code {{BankBranchCode|6}} use ref # {{AccountNumber|10}} send proof<br/>

Declare @String varChar (MAX) = 'select План оплаты {{ExpectedAmount | 11 }}. Платите в {{BankName | 4}} {{BankAccountNumber | 11}} Код {{BankBranchCode | 6}} используйте ref # {{AccountNumber | 10}} отправить подтверждение ' Выберите @String Тогда как мне получить только значения между несколькими {{***}}

Возврат

{{ExpectedAmount|11}}
{{BankName|4}}
{{BankAccountNumber|11}}
{{BankBranchCode|6}}
{{AccountNumber|10}}

1 Ответ

0 голосов
/ 09 января 2020

MS sql версия сервера на основе его XML возможностей.

declare @tbl table(
   col nvarchar(max)
);

insert @tbl(col)
values('Payment Plan of {{ExpectedAmount|11}}. Pay into {{BankName|4}} {{BankAccountNumber|11}} Code {{BankBranchCode|6}} use ref # {{AccountNumber|10}} send proof');

select t2.n.value ('.[1]', 'nvarchar(1000)') txt
from ( 
       select cast('<root>'+replace(replace(col, '{{','<elem>{{'),'}}','}}</elem>')+'</root>' as xml) x
       from @tbl
     ) t
cross apply t.x.nodes('/root/elem') t2(n);
...