我正在使用MS SQL Server 2012并具有以下XML结构:
<value name="parameter">
<![CDATA[__na__]]>
<![CDATA[1]]>
<![CDATA[2]]>
<![CDATA[3]]>
<![CDATA[12]]>
</value>
并将其作为字符串保存在NVARCHAR(MAX)数据类型字段中。
当我按如下方式转换此值时:
CAST(ColumnValue AS XML)
我得到以下XML结构:
<value name="parameter">__na__12312</value>
有没有办法用exmasple的逗号分隔CDATA并获得以下结构:
<value name="parameter">__na__,1,2,3,12</value>
在我的实际情况中,字符串长度可以变化,我只使用整个XML的一部分,因此替换每个']]&gt;'使用']]&gt;,'听起来不是很好的解决方案。还有其他办法吗?
答案 0 :(得分:0)
如果你不介意让第一个字符带有前缀逗号,你可以试试这个:
/*Loading test data*/
declare @xml varchar(8000)
set @xml = '
<value name="parameter">
<![CDATA[__na__]]>
<![CDATA[1]]>
<![CDATA[2]]>
<![CDATA[3]]>
<![CDATA[12]]>
</value>'
/*the replace*/
set @xml= REPLACE(@xml,'<![CDATA[','<![CDATA[,' )
select CAST(@xml AS XML)
这将导致:
<value name="parameter">,__na__ ,1 ,2 ,3 ,12 </value>
此替换确保您只更改CDATA而不是其他xml参数或值,当您恢复值“parameter”时,您只需要忽略第一个字符