TSQL:如何使用另一个相关表中的 xml 标记的值更新 xml 标记的值?
如何使用另一个相关表中 xml 标记的值更新 xml 标记的值?
像这样的东西:
UPDATE v2
SET
[xml].modify ('replace value of (//TAG1/text())[1]
with "CAST(v1.[xml].query(''//TAG2'') AS NVARCHAR(MAX))"')
FROM
table2 v2,
table1 v1
WHERE
v2.id = v1.id
How can I update the value of an xml tag with the value of an xml tag from another related table?
something like this:
UPDATE v2
SET
[xml].modify ('replace value of (//TAG1/text())[1]
with "CAST(v1.[xml].query(''//TAG2'') AS NVARCHAR(MAX))"')
FROM
table2 v2,
table1 v1
WHERE
v2.id = v1.id
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我很晚才回答这个问题,但如果您希望将来“批量更新”XML 列,并且您使用的是 SQL 2005+,则可以使用 CTE 来完成此操作:
I'm pretty late to this question, but if you're looking to "mass update" an XML column in the future, and you are in SQL 2005+, you can use a CTE to accomplish this:
我认为您不能一步完成此操作 - 但如果您使用的是 SQL Server 2008,则可以分两步完成:
在
sql:variable
中指定sql:variable
的能力code>replace value of XQuery 是 SQL Server 2008 中的一项新功能 - 因此,如果您停留在 2005 年,那么不幸的是,这将不起作用。I don't think you can do this in a single step - but you can do it in two steps, if you're on SQL Server 2008:
The ability to specify a
sql:variable
in yourreplace value of
XQuery is a new feature in SQL Server 2008 - so if you're stuck on 2005, this won't work, unfortunately.sql:variable
功能也适用于 2005 Server。您只需将所有结构放入大括号:modify('replace value of (//TAG1/text())[1] with {sql:variable("@NewValue")}')
Feature with
sql:variable
also works on 2005 Server. You just need to put all the construction into braces:modify('replace value of (//TAG1/text())[1] with {sql:variable("@NewValue")}')