简体   繁体   English

SQL Server 2005:如何对字符串执行拆分

[英]SQL Server 2005: How to perform a split on a string

I have the following string that I need to split from a field called symbols 我需要从名为symbols的字段中拆分以下字符串

234|23|HC

This is my current SQL statement 这是我当前的SQL语句

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

Select @t;

which produces <symbols>234|23|HC</symbols> 产生<symbols>234|23|HC</symbols>

but I need to split the string into child nodes so the result is like this: 但我需要将字符串拆分为子节点,因此结果如下:

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

A replace version that takes care of the problem characters. 用于处理问题字符的替换版本。

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

Result: 结果:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM