当前位置: 代码迷 >> Sql Server >> 怎么在XML字段插入带有CDATA的数据
  详细解决方案

怎么在XML字段插入带有CDATA的数据

热度:93   发布时间:2016-04-24 09:46:12.0
如何在XML字段插入带有CDATA的数据?
感谢关注

我做的一个测试,很简单的一个表,结构如下:

CREATE TABLE [dbo].[TXmlData](
[FID] [int] IDENTITY(1,1) NOT NULL,
[XmlNode] [xml] NOT NULL,
 CONSTRAINT [PK_TXmlData] PRIMARY KEY CLUSTERED 
(
[FID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

执行:
insert into TXmlData values('<PicUrl><![CDATA[ae3ceb5c-fee9-459a-a3ef-dce238360d27]]></PicUrl>')

之后,我查询数据库,发现XmlData字段里的内容,没有了CDATA部分,存储的内容为:
<PicUrl>ae3ceb5c-fee9-459a-a3ef-dce238360d27</PicUrl>


我想知道,我如果希望写入:
<PicUrl><![CDATA[ae3ceb5c-fee9-459a-a3ef-dce238360d27]]></PicUrl>


我该如何设计数据库或是如何操作呢?
------解决思路----------------------


http://www.cnblogs.com/long-gengyun/archive/2011/09/06/2168397.html
------解决思路----------------------
我想你理解错了
本身<![CDATA[ae3ceb5c-fee9-459a-a3ef-dce238360d27]]> 已经将其内部的ae3ceb5c-fee9-459a-a3ef-dce238360d27解析为字符串了,所以插入的效果没有问题,如果你要得到<![CDATA[ae3ceb5c-fee9-459a-a3ef-dce238360d27]]>,外面再套一个<![CDATA[<![CDATA[ae3ceb5c-fee9-459a-a3ef-dce238360d27]>]]>
这样查询出来的字符就是
SELECT v FROM TXmlData t1
cross apply (select n.v.value('.','varchar(100)')v from t1.XmlNode.nodes('/PicUrl') n(v))t2
--<![CDATA[ae3ceb5c-fee9-459a-a3ef-dce238360d27]>

------解决思路----------------------
引用:
我想你理解错了
本身<![CDATA[ae3ceb5c-fee9-459a-a3ef-dce238360d27]]> 已经将其内部的ae3ceb5c-fee9-459a-a3ef-dce238360d27解析为字符串了,所以插入的效果没有问题,如果你要得到<![CDATA[ae3ceb5c-fee9-459a-a3ef-dce238360d27]]>,外面再套一个<![CDATA[<![CDATA[ae3ceb5c-fee9-459a-a3ef-dce238360d27]>]]>
这样查询出来的字符就是
SELECT v FROM TXmlData t1
cross apply (select n.v.value('.','varchar(100)')v from t1.XmlNode.nodes('/PicUrl') n(v))t2
--<![CDATA[ae3ceb5c-fee9-459a-a3ef-dce238360d27]>