简体   繁体   English

TSQL删除XML节点(如果其子元素包含给定值)

[英]TSQL Delete XML node if its child element contains a given value

XML Storage can have zero or more <Address> nodes under <Addresses> Need a query to delete any <Address> nodes whose <AddressLine> = '2 Church Lane' XML存储在<Addresses>下可以有零个或多个<Address>节点需要查询以删除任何<Address> <AddressLine> = '2 Church Lane' <Address>节点

Starting XML: 启动XML:

declare @t table (storage xml);
insert into @t (storage)
select '<Person>
  <Fullname />
  <Surname>Smith</Surname>
  <FirstName>John</FirstName>
  <Addresses>
      <Address>
        <AddressLine>1 Church Lane</AddressLine>
      </Address>
      <Address>
        <AddressLine>2 Church Lane</AddressLine>
      </Address>
      <Address>
        <AddressLine>3 Church Lane</AddressLine>
      </Address>
  </Addresses>
</Person>';

Resulting XML: 产生的XML:

<Person>
  <Fullname />
  <Surname>Smith</Surname>
  <FirstName>John</FirstName>
  <Addresses>
      <Address>
        <AddressLine>1 Church Lane</AddressLine>
      </Address>
      <Address>
        <AddressLine>3 Church Lane</AddressLine>
      </Address>
  </Addresses>
</Person>

Found it: 找到了:

update @t
SET storage.modify('
    delete (/Person/Addresses/Address[AddressLine = "2 Church Lane"])
')

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM