SQL - 从字符串中获取大括号之间的值

时间:2014-06-05 07:25:36

标签: sql string sql-server-2008 logic temp-tables

我正在使用SQL Server 2008。

我怎样才能获得" {"和"}"从一个字符串并将其放入临时表

DECLARE @myString VARCHAR(100) = 'my value {Year}{Month}{Day} sample'
create table #temp(Tag varchar(50))

我需要插入"年","月","日"从字符串@myString

进入临时表

有没有逻辑可以做到这一点?

1 个答案:

答案 0 :(得分:3)

将所有{替换为<X>,将所有}替换为</X>。使用nodes()转换为XML并在交叉应用中粉碎xml。使用value()提取值。

declare @myString varchar(100) = 'my value {Year}{Month}{Day} sample';

select T2.X.value('.', 'varchar(50)')
from (select cast(replace(replace((select @myString for xml path('')), '{', '<X>'), '}', '</X>') as xml).query('.')) as T1(X)
  cross apply T1.X.nodes('/X/text()') as T2(X);

SQL Fiddle