根据存在更新或插入元素到xml列

时间:2013-03-26 15:15:37

标签: sql xml sql-server-2008 xpath sql-update

我正在尝试编写一个更新语句,用于检查XML列中是否存在元素,并更新它的值(如果存在)。如果不是,则将该值作为新元素插入。

类似的东西:

UPDATE Table
SET xmlCol = 
case
when xmlCol.exist('element') = 1
then xmlCol.modify('replace value of blah')
else xmlCol.modify('insert blah')
end
where whatever

我是以错误的方式来做这件事的吗?

1 个答案:

答案 0 :(得分:3)

xml数据类型的modify()方法只能在UPDATE语句的SET子句中使用。

在两个陈述中这样做可能是最简单的。

UPDATE Table 
SET xmlCol.modify('replace value of /blah')
WHERE xmlCol.exist('/blah') = 1;

UPDATE Table
SET xmlCol.modify('insert /blah')
WHERE xmlCol.exist('/blah') = 0;