SQL 使用 XML 内容查询更新 nvarchar 向节点添加缺少的属性

SQL query update nvarchar with XML contents add missing attribute to node

我有一个包含 XML 内容的 nvarchar 列。不确定是否需要转换为 XML。所有 XML 内容的格式都相同,但需要修改一些记录,其中第一个节点需要添加一个属性:

<MyFirstNode SomeAttribute="value" SomeOtherAttribute="anothervalue">

更新为:

<MyFirstNode SomeAttribute="value" AddThisAttribute="nicevalue" SomeOtherAttribute="anothervalue">

如何使用 AddThisAttribute="nicevalue" 更新所有必需的节点?都需要相同的属性和值。

如果这实际上将被解释为 XML,您不必在属性列表的中间插入 AddThisAttribute="nicevalue";一种选择是做一个简单的

UPDATE myTable
SET XMLColumn = REPLACE(XMLColumn, '<MyFirstNode ', '<MyFirstNode AddThisAttribute="nicevalue" ')

这可能比尝试插入值更容易,尤其是当每行中的 SomeAttribute 和 SomeOtherAttribute 发生变化时。

或者,

UPDATE myTable
SET XMLColumn = REPLACE(XMLColumn, ' SomeOtherAttribute=', ' AddThisAttribute="nicevalue"  SomeOtherAttribute=')

可以工作,但如果 "SomeOtherAttribute" 出现在除 MyFirstNode 之外的其他节点类型中,这可能会产生不需要的更改。