【发布时间】:2013-04-18 09:18:53
【问题描述】:
我正在使用 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>
有没有办法用逗号分隔CDATA,例如得到以下结构:
<value name="parameter">__na__,1,2,3,12</value>
在我的实际情况下,字符串长度可能会有所不同,并且我只使用整个 XML 的一部分,因此将每个 ']]>' 替换为 ']]>' 听起来并不是一个好的解决方案。有没有其他方法可以做到这一点?
【问题讨论】:
-
相关的Sql Server 2005 Xml data type has CDATA removed on INSERT 和类似的 - 看起来只要数据属于
xml类型,CDATA信息就会丢失。 -
根据定义:CDATA 用于封装不应由 XML 解析器解析的文本数据,因此需要额外的控件来规避这一点。对于 MS-SQL 2012,请查看此答案是否支持您的努力:stackoverflow.com/questions/1429351/…,它提供了有关控制 FOR XML EXPLICIT 的信息。有点跑题了,但这是一篇关于 XML 数据的 CAST() 和 CONVERT() 之间区别的好文章,simple-talk.com/sql/database-administration/…
标签: xml tsql sql-server-2012 cdata