更新XML存储在SQL Server中的XML列(Update XML stored in a XM

2019-09-02 18:57发布

我在SQL Server 2012中我遇到一些疑问,但反对的一个示例表.modify() XQuery的方法执行,但没有更新。

下面是表

对于此只是想更新设置为“NewTest”

这将执行但没有被更新! 谢谢你的帮助!

Answer 1:

由于有一个XML命名空间xmlns:dev="http://www.w3.org/2001/XMLSchema" )在XML文档中,你必须inlcude在你的UPDATE语句!

试试这个:

;WITH XMLNAMESPACES(DEFAULT 'http://www.w3.org/2001/XMLSchema')
UPDATE XmlTable
SET XmlDocument.modify('replace value of (/Doc/@Settings)[1] with "NewTest"')
WHERE XmlId = 1


Answer 2:

你应该在你更新语法声明命名空间。尝试下面的语法

Declare @Sample table
(xmlCol xml)

Insert into @Sample
values
('<dev:Doc xmlns:dev="http://www.w3.org/2001/XMLSchema" 
                       SchemaVersion="0.1" Settings="Testing" Ttile="Ordering">
        <Person id="1">
            <FirstName>Name</FirstName>
        </Person>
      </dev:Doc>')
 Select * from @Sample
 Update @Sample
 SET xmlCol.modify(
                  'declare namespace ns="http://www.w3.org/2001/XMLSchema";
                   replace value of (/ns:Doc/@Settings)[1]
                   with "NewTest"')

 Select * from @Sample


文章来源: Update XML stored in a XML column in SQL Server