如何在XML字段插入带有CDATA的数据? 喵http://www.cnblogs.com/long-gengyun/archive/2011/09/06/2168397.html 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我想你理解错了本身<![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]> 喵,结果,存入的信息变成了:<PicUrl><![CDATA[ae3ceb5c-fee9-459a-a3ef-dce238360d27]></PicUrl> er...的确是--<![CDATA[ae3ceb5c-fee9-459a-a3ef-dce238360d27]>看似简单的写法,但似乎都是没见过,我再研究一下多谢多谢 VALUE,NODE,QUERYxml实在是不好玩 没有问题的,XML中<![CDATA[]>的意思是把其中的东西解析为字符串,所以你最开始的insert into TXmlData values('<PicUrl><![CDATA[ae3ceb5c-fee9-459a-a3ef-dce238360d27]]></PicUrl>')是没有问题的,XML会把ae3ceb5c-fee9-459a-a3ef-dce238360d27当成字符串处理,这就好比,做HTML页面,按照严格要求的话,你要显示字符串<input>时,没有转意的话,它会当控件显示而如果你要显示<input>,就得转义,<input>,这时候页面就正常显示为<input>了,然后你打开源代码一看,不对啊,源代码显示为<input>~~一个道理的,所以如果你只是ae3ceb5c-fee9-459a-a3ef-dce238360d27这个东西对你有意义,你那样插入就可以了,它显示给你看就是这样<PicUrl>ae3ceb5c-fee9-459a-a3ef-dce238360d27</PicUrl>你看不到长这样的<PicUrl><![CDATA[ae3ceb5c-fee9-459a-a3ef-dce238360d27]]></PicUrl>的SQL XML,当然你可以存储为VARCHAR,要用的时候再转为XML 我觉得SQL板块的研究风气比较好。非常感谢你们的关注。我就继续多问一句ky_min说,用CDATA吧原来数据包起来就可以显示,这个我已经理解了,可是原文:<PicUrl><![CDATA[ae3ceb5c-fee9-459a-a3ef-dce238360d27]]></PicUrl>CDATA块应该是<![CDATA[.....]]>那包裹起来后,不是应该<PicUrl><![CDATA[<![CDATA[ae3ceb5c-fee9-459a-a3ef-dce238360d27]]>]]></PicUrl>中间的CDATA块和ky_min的放在一起就容易看出区别<![CDATA[<![CDATA[ae3ceb5c-fee9-459a-a3ef-dce238360d27]]>]]><![CDATA[<![CDATA[ae3ceb5c-fee9-459a-a3ef-dce238360d27]>]]>为啥ky_min的少一个]才是正确的呢?这样不是少了一个么。我不懂,多问问,感谢耐心。 呃,刚发现问题~~那就只能用转义了< >,因为]]>不合法,之前没注意到~~<PicUrl><![CDATA[ae3ceb5c-fee9-459a-a3ef-dce238360d27]]></PicUrl>你可以了解一些关于XML的东西http://www.cnblogs.com/kissdodog/archive/2013/02/24/2923991.html 一个统计数据查询sql 表数据重复插入的问题&帮我结贴... 请问这样的存储过程该怎样写 动态sql中的引号到底该用几个? 急,sql server连不上 请教一个有关TOP @Num 的问题,多谢! 后缀为.db得备份文件如何导入到sqlserver里面 你们都用LOGSHIPPING来时时备份数据吗? 如何获取当前行某一列的字段值 怎么样在: sql server enterprise manager 中插入一条记录?? 无法打开登录所请求的数据库 "db_09"。登录失败 关于distinct用法的几个疑问
本身<![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]>
<PicUrl><![CDATA[ae3ceb5c-fee9-459a-a3ef-dce238360d27]></PicUrl>
的确是
--<![CDATA[ae3ceb5c-fee9-459a-a3ef-dce238360d27]>
看似简单的写法,但似乎都是没见过,我再研究一下多谢多谢
VALUE,NODE,QUERYxml实在是不好玩
是没有问题的,XML会把ae3ceb5c-fee9-459a-a3ef-dce238360d27当成字符串处理,这就好比,做HTML页面,按照严格要求的话,你要显示字符串<input>时,没有转意的话,它会当控件显示
而如果你要显示<input>,就得转义,<input>,这时候页面就正常显示为<input>了,然后你打开源代码一看,不对啊,源代码显示为<input>~~
一个道理的,所以如果你只是ae3ceb5c-fee9-459a-a3ef-dce238360d27这个东西对你有意义,你那样插入就可以了,它显示给你看就是这样<PicUrl>ae3ceb5c-fee9-459a-a3ef-dce238360d27</PicUrl>
你看不到长这样的<PicUrl><![CDATA[ae3ceb5c-fee9-459a-a3ef-dce238360d27]]></PicUrl>的SQL XML,当然你可以存储为VARCHAR,要用的时候再转为XML
ky_min说,用CDATA吧原来数据包起来就可以显示,这个我已经理解了,可是原文:
<PicUrl><![CDATA[ae3ceb5c-fee9-459a-a3ef-dce238360d27]]></PicUrl>
CDATA块应该是
<![CDATA[.....]]>那包裹起来后,不是应该
<PicUrl><![CDATA[<![CDATA[ae3ceb5c-fee9-459a-a3ef-dce238360d27]]>]]></PicUrl>中间的CDATA块和ky_min的放在一起就容易看出区别
<![CDATA[<![CDATA[ae3ceb5c-fee9-459a-a3ef-dce238360d27]]>]]>
<![CDATA[<![CDATA[ae3ceb5c-fee9-459a-a3ef-dce238360d27]>]]>为啥ky_min的少一个]才是正确的呢?这样不是少了一个么。我不懂,多问问,感谢耐心。
那就只能用转义了< >,因为]]>不合法,之前没注意到~~
<PicUrl><![CDATA[ae3ceb5c-fee9-459a-a3ef-dce238360d27]]></PicUrl>你可以了解一些关于XML的东西
http://www.cnblogs.com/kissdodog/archive/2013/02/24/2923991.html