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 之外的其他节点类型中,这可能会产生不需要的更改。
我有一个包含 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 之外的其他节点类型中,这可能会产生不需要的更改。