我有一个包含XML内容的nvarchar列。不确定是否需要转换为XML。所有XML内容的格式都相同,只是需要修改一些记录,而第一个节点需要添加一个属性:
<MyFirstNode SomeAttribute="value" SomeOtherAttribute="anothervalue">
更新至:
<MyFirstNode SomeAttribute="value" AddThisAttribute="nicevalue" SomeOtherAttribute="anothervalue">
如何使用AddThisAttribute =&#34; nicevalue&#34;更新所有必需的节点? ?所有人都需要相同的属性和价值。
答案 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之外的其他节点类型中,这可能会进行不希望的更改。