TSQL 2005,XML DML - 一次更新两个值?

Tre*_*Dev 8 xml t-sql sql-server-2005 xml-dml dml

有没有办法将这两个替换值与1个更新语句组合在一起?

UPDATE dbo.MyTable
SET MyXmlColumn.modify('replace value of (/node/@att1)[1] with "1"')
WHERE id = 1

UPDATE dbo.MyTable
SET MyXmlColumn.modify('replace value of (/node/@att2)[1] with "2"')
WHERE id = 1
Run Code Online (Sandbox Code Playgroud)

http://msdn.microsoft.com/en-US/library/ms190675(v=SQL.90).aspx

har*_*316 6

我不认为你很幸运,Thx.

我尝试了几种没有快乐的语法变体.例如,显而易见的:

SET MyXmlColumn.modify('...'), MyXmlColumn.modify('...')
Run Code Online (Sandbox Code Playgroud)

收益率:

在SET子句中多次指定列名"MyXmlColumn".在同一SET子句中不能为列分配多个值.修改SET子句以确保列只更新一次.如果SET子句更新视图的列,则列名称"MyXmlColumn"可能在视图定义中出现两次.

但是对于XML DML空间中的此错误消息没有任何帮助.

底线是Expression1和Expression2必须是单个元素.

即使是最彻底的讨论最终也会绕过它......

http://blogs.msdn.com/b/denisruc/archive/2005/09/19/471562.aspx

抱歉.:(

PS:如果你可以忍受hackiness,转换为VARCHAR(MAX)然后做一个正常的REPLACE()应该做的伎俩.请参阅:我可以在t-sql中进行查找/替换吗?