我在SQL中有一个存储过程,我有以下声明:
声明@fields xml
我的SP从前端传递值然后执行。它传递的值看起来像这样取决于用户从前端选择的内容。出于这个例子的目的,我只包括3个ID。
'<F><ID>979</ID><ID>1000</ID><ID>989</ID></F>'
我的问题是:
如何找到node = 1000以及是否存在(存在),然后插入(添加)到另外2个节点,
<ID>992</ID><ID>993</ID>
到我现有的'<F><ID>979</ID><ID>1000</ID><ID>989</ID></F>'
xml。
如果<ID>1000</ID>
不存在,则不执行任何操作。
因此,如果存在1000,最终结果应该是这样的。
<F><ID>979</ID><ID>1000</ID><ID>989</ID><ID>992</ID><ID>993</ID></F>
如果没有,结果应该保留:
<F><ID>979</ID><ID>1000</ID><ID>989</ID></F>
我无法理解这个问题?
答案 0 :(得分:2)
检查一下:
declare @fields xml = '<F><ID>979</ID><ID>1000</ID><ID>989</ID></F>'
, @add xml = '<ID>992</ID><ID>993</ID>'
;
if @fields.exist('/F[1]/ID[text()="1000"]') = 1
set @fields.modify('insert sql:variable("@add") as last into /F[1]');
select @fields