带有XML内容的SQL查询更新nvarchar将缺少的属性添加到节点

时间:2017-09-05 22:09:12

标签: sql sql-server xml tsql sqlxml

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

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

更新至:

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

如何使用AddThisAttribute =&#34; nicevalue&#34;更新所有必需的节点? ?所有人都需要相同的属性和价值。

1 个答案:

答案 0 :(得分:1)

如果这实际上将被解释为XML,则您无需插入AddThisAttribute =&#34; nicevalue&#34;在属性列表的中间;一个选择是做一个简单的

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

这可能比尝试插入值更容易,特别是如果SomeAttribute和SomeOtherAttribute在每行中发生更改。

或者,

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

可以工作,但是如果&#34; SomeOtherAttribute&#34;出现在除MyFirstNode之外的其他节点类型中,这可能会进行不希望的更改。