微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

sql-server – 如何获取sql server XML列的xml安全版本

有没有办法在sql server中获取xml列的xml安全版本?

通过xml-Safe我的意思是转义特殊字符,如<,>,’,&等.

我想避免自己做替换.在sql server中是否有内置函数.

我想要实现的是将xml内容存储到另一个xml属性中.

解决方法

我假设xml-safe意味着转义 XML特殊标记.如果您希望将 XML列包含在另一个XML文档中,那么您有两个选择:

>将列设置为[*]:select …,xmlcolumn as [*],… from … for xml path …这将在结果XMl中嵌入列的XML内容.例如.如果列的值为< element>值< / element>然后结果将类似于< root>< row>< element> value< / element>< / row>< / root>.
>将列作为列名称进行投影:select …,xmlcolumn,… from … for xml path …这将插入列的内容作为值(即它将使其逃脱).例如.与上述相同的值将产生< root>< row>< xmlcolumn>& lt; element& gt;& lt; value& lt; / element& gt;.

如果您的问题是关于其他问题,那么您将不得不以适当的方式对其进行重新措辞并正确使用术语.除了你之外,不要发明任何人都不懂的新术语.

更新:

如果要将XML值插入列中,则根本不需要执行任何操作.客户端库知道如何处理正确的转义.只要你正确编写代码.记住,XML不是一个字符串,永远不应该被视为一个字符串.如果在客户端中编写XML,请使用适当的XML库(XmlWriter,XML DOM,Linq to XML等).将XML传入sql Server时,请使用适当的类型:SqlXml.存储过程应使用适当的参数类型:XML.当您阅读它时,请使用适当的方法来读取XML:GetSqlXml().同样可以将类型声明为一个miriad设计器(LINQ to sql,EF等).最终,永远不需要手动转义XML字符.如果您发现自己这样做,那么您使用的是错误的API,您必须返回绘图板.

一个好的开始阅读是XML Support in Microsoft SQL Server 2005.

最后,要在描述时操作XML(使用表B的XML列更新表A的XML列),使用XML methods,特别是modify (… insert…),然后使用sql:column绑定XQuery中的表B列:

update A
set somecolumn.modify('insert {sql:column("B.othercolumn")} before somenode')
from A join B on ...;

在你评论你威胁XML作为一个字符串,正如我已经说过,你永远不应该这样做:字符串和XML是水和石油.

原文地址:https://www.jb51.cc/mssql/77837.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐