【问题标题】:How to update all xml attributes' value in an xml variable using t-sql?如何使用 t-sql 更新 xml 变量中的所有 xml 属性值?
【发布时间】:2011-07-17 21:37:27
【问题描述】:

让我们有一个示例片段

DECLARE @xml XML = N'
<a abb="122">
    <b>
    </b>
</a>
<a abb="344">
    <b>
    </b>
</a>
...
';
SELECT @xml;

--need to update abb to be 888 in @xml here

SELECT @xml;

我们可以一次更新一个属性,如here 所示。新问题是:我们如何更新属性abb 的所有一次出现?

请帮忙。

【问题讨论】:

    标签: xml tsql sql-server-2008


    【解决方案1】:

    您可以将 XML 拆分为表变量,分别替换每个节点,然后再次组合它们。

    declare @xml xml = 
    '<a abb="122">
      <b></b>
     </a>
     <a abb="344">
      <b></b>
     </a>'
    
    declare @T table (XMLCol xml)
    insert into @T
    select
      a.query('.')
    from @xml.nodes('a') a(a)
    
    update @T set
      XMLCol.modify('replace value of (/a/@abb)[1] with 888')
    
    set @xml = (select XMLCol as [*]
                from @T
                for xml path(''))
    

    【讨论】:

      猜你喜欢
      • 2011-07-17
      • 1970-01-01
      • 2020-10-06
      • 1970-01-01
      • 2017-02-12
      • 1970-01-01
      • 1970-01-01
      • 2012-09-14
      • 1970-01-01
      相关资源
      最近更新 更多