2011-09-06 75 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>