開發過程中,有時會將數據信息通過分隔符拼接構成字符串,在存儲過程或者SQL腳本中,就必須解析字符串。
在Sql Server2005以上的版本時,可以通過靈活使用 SQL中的 XML類型 來實現解析帶有分隔符的字符串。
思路:
1.將分隔符替換,構建成XML格式字符轉
2.將XML格式字符串 轉為XML類型,操作XML類型
實例:
1.僅有一種分隔符,如使用逗號分割的字符串。
Declare @dataString nvarchar(max)
set @dataString='張三,李四,王五,趙六';
SET ARITHABORT ON
DECLARE @x XML
SET @x = CONVERT(XML,'<items><item id="' + REPLACE(@dataString, ',', '"/><item id="') + '"/></items>')
--<items>
-- <item id="張三" />
-- <item id="李四" />
-- <item id="王五" />
-- <item id="趙六" />
--</items>
--輸出到臨時表
SELECT ItemID=x.item.value('@id[1]', 'INT') INTO #Temp_ChangeItem FROM @x.nodes('//items/item') AS x(item)
2.有兩種分隔符。
Declare @dataString nvarchar(max) set @dataString='NAME|張三&&AGE|16歲&&GENDER|男'; SET ARITHABORT ON declare @x Xml set @x=CONVERT(xml,'<infos><row key="'+replace(replace(@dataString,'|','" value="'),'&&','"/><row key="') + '"/></infos>') SELECT @x --<infos> -- <row key="NAME" value="張三" /> -- <row key="AGE" value="16歲" /> -- <row key="GENDER" value="男" /> --</infos>
