8

我在 SQL Server 2012 中有一个示例表。我正在运行一些查询,但.modify()XQuery 方法正在执行但没有更新。

这是桌子

xml 表

为此,只需尝试将设置更新为“NewTest”

Xml 片段

这将执行,但没有任何更新!谢谢你的帮助!

不更新片段

4

2 回答 2

8

由于您的 XML 文档中有一个XML 名称空间( xmlns:dev="http://www.w3.org/2001/XMLSchema"),因此您必须在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
于 2013-05-13T04:24:57.633 回答
3

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

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
于 2013-05-13T04:39:30.053 回答