簡體   English   中英

SQL,查找xml變量中的節點值(如果存在)將其他節點插入xml變量中

[英]SQL, Find node value in xml variable, if it exists insert additional nodes into xml variable

我在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>

我只是無法理解這個?

檢查一下:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM