SQL -

2014-06-05 41 views
0

我使用SQL Server 2008的SQL -

我怎樣才能獲得值之間的「{」和「}」從一個字符串從字符串獲得大括號中的數值,並把它變成一個臨時表

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

我需要從字符串@myString

插入「年」,「月」,「日」到臨時表中是否有任何邏輯做到這一點?

+0

是字符串總是相同的,但有不同的日期? – RoughPlace

回答

3

全部替換{<X>和全部}</X>。轉換爲XML並使用nodes()在交叉應用中碎化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

+0

非常好的創意解決方案,甚至沒有想到用這種方式使用xml函數 – DrCopyPaste