2017-09-05 47 views
0

我有一个nvarchar列XML内容。不知道它是否需要转换为XML。所有的XML内容的格式,除了大量的记录同样需要在第一个节点需要的属性添加到它被修改:SQL查询更新nvarchar与XML内容添加缺少的属性节点

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

更新:

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

如何更新所有AddThisAttribute =“nicevalue”所需的节点?都需要相同的属性和值。

+0

如果列中包含XML,那么列是否为NVARCHAR,而不是XML?我想你的选择归结为将它转换为XML,并使用'modify('插入属性AddThisAttribute {(“nicevalue”)}到(*)[1]')函数或写一个(可能是复杂的)STUFF语句为你的专栏。 – ZLK

回答

1

如果这实际上将被解释为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以外的其他节点类型,这可能使不期望的改变。

+0

我将此设置为正确的答案,但这是一个nvarchar,我认为您需要先将其转换为XML,然后才能将其更新为XML列。谢谢! –