TSQL 如果其子元素包含给定值,则删除 XML 节点 [英] TSQL Delete XML node if its child element contains a given value

查看:40
本文介绍了TSQL 如果其子元素包含给定值,则删除 XML 节点的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

XML 存储可以在 下有零个或多个

节点需要查询以删除 的任何
节点.= '2 教堂巷'

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:

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>';

结果 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>

推荐答案

找到了:

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

这篇关于TSQL 如果其子元素包含给定值,则删除 XML 节点的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆