【发布时间】:2013-05-07 00:22:30
【问题描述】:
我在 SQL Server 2012 中有一个示例表。我正在运行一些查询,但 .modify() XQuery 方法正在执行但没有更新。
这是桌子
为此只是尝试将设置更新为“NewTest”
这将执行,但没有更新!感谢您的帮助!
【问题讨论】:
标签: sql-server sql-server-2008 tsql sql-server-2012
我在 SQL Server 2012 中有一个示例表。我正在运行一些查询,但 .modify() XQuery 方法正在执行但没有更新。
这是桌子
为此只是尝试将设置更新为“NewTest”
这将执行,但没有更新!感谢您的帮助!
【问题讨论】:
标签: sql-server sql-server-2008 tsql sql-server-2012
由于您的 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
【讨论】:
你应该在你的更新语法中声明一个命名空间。试试下面的语法
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
【讨论】: