【问题标题】:SQL Select multiple value between brackets in a stringSQL在字符串中的括号之间选择多个值
【发布时间】:2020-01-09 07:09:52
【问题描述】:

我有一个 SQL 字符串,其中包含括在括号中的字符串中的合并字段。
我只想提取合并字段。

字符串

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) = '选择 {{ExpectedAmount|11}} 的付款计划。支付到 {{BankName|4}} {{BankAccountNumber|11}} 代码 {{BankBranchCode|6}} 使用 ref # {{AccountNumber|10}} 发送证明'

选择@String

那我如何只获取多个 {{***}}

之间的值

返回

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

【问题讨论】:

  • 你使用什么数据库?
  • 您可以使用像 '/({{[a-z]+\|[0-9]+}})/i' 这样的正则表达式来匹配您的字符串并根据需要连接它们。
  • 数据库是 SQL
  • SQL 不是数据库,它是一种语言,它可以区分一系列 DBMS 使用的方言。你的 DBMS 是什么?
  • 大家好。来自 SQL 数据库的 TSQL

标签: sql string merge split


【解决方案1】:

基于其 XML 工具的 MS sql 服务器版本。

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);

【讨论】:

    猜你喜欢
    • 2016-01-26
    • 2022-08-03
    • 1970-01-01
    • 2017-12-27
    • 1970-01-01
    • 2015-07-22
    • 1970-01-01
    • 2017-02-26
    • 2018-06-24
    相关资源
    最近更新 更多