2011-09-06 80 views
3

我有以下字符串,我需要從外地分裂稱爲符號的SQL Server 2005:如何在一個字符串進行拆分

234|23|HC 

這是我當前的SQL語句

declare @t xml; 
Set @t = (
Select symbols from tc for xml auto, elements) 

Select @t; 

其中產生<symbols>234|23|HC</symbols>

但我需要將字符串拆分爲子節點,所以結果是這樣的:

<symbols> 
     <symbol>234</symbol> 
     <symbol>23</symbol> 
     <symbol>HC</symbol> 
</symbols> 
+0

你的符號可以包含會導致一個簡單的替換和追加方法問題的任何字符? –

+1

一個簡單的選項;選擇「‘+取代(FLD,‘|’,’‘)+’」 –

+0

@Alex肯定的,但會產生<等,這些我不能在xml文件 – Cavide

回答

2

替換版本負責處理問題字符。

declare @T table(symbol varchar(50)) 
insert into @T values ('234|23|HC|Some problem chars <> &') 

select cast('<symbols><symbol>'+ 
      replace(cast(cast('' as xml).query('sql:column("symbol")') as varchar(max)), 
        '|', 
        '</symbol><symbol>')+ 
      '</symbol></symbols> ' as xml) 
from @T 

結果:

<symbols> 
    <symbol>234</symbol> 
    <symbol>23</symbol> 
    <symbol>HC</symbol> 
    <symbol>Some problem chars &lt;&gt; &amp;</symbol> 
</symbols> 
相關問題