解决方法
>将列设置为[*]: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是水和石油.