簡體   English   中英

使用TSQL從XML中刪除具有特定值的節點

[英]Delete nodes with certain value from XML using TSQL

我正在嘗試解析一段XML並刪除包含某些值的節點。 我知道如果值是精確的,如何刪除它們,但我想使用類似“包含”的東西。

這可以准確刪除:

update @XML set data.modify('delete //Message[text() = "customer has deleted their account"]')

但是我想刪除“Message”節點只包含文本的位置,例如:

update @XML set data.modify('delete //Message[contains(text(), "customer")]')

但是這會返回錯誤:

XQuery [@XML.data.modify()]: 'contains()' requires a singleton (or empty sequence), found operand of type 'xdt:untypedAtomic *'

嘗試

update @XML set data.modify('delete //Message[text()][contains(.,"customer")]')

刪除<message/>元素及其內容

update @XML set data.modify('delete //Message//text()[contains(.,"customer")]')

刪除<message/>元素的內容。

這里的示例http://msdn.microsoft.com/en-us/library/ms178026.aspx

    declare @XML xml = '
    <Root>
      <Sub>
        <Record>
          <Guid>aslkjflaksjflkasjfkljsd</Guid>
        </Record>
        <Record>
           <Guid>opqiwuerl;kasdlfkjawop</Guid>
        </Record>
      </Sub>
    </Root>'

declare @Guid varchar(30) = 'aslkjflaksjflkasjfkljsd'

set @XML.modify('delete /Root/Sub/Record[Guid = sql:variable("@Guid")]')

參考https://dba.stackexchange.com/questions/40039/how-to-return-xml-node-ordinal-or-delete-node-based-on-element-value

暫無
暫無

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

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