Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Wie aktualisiere ich den Wert aller XML-Attribute in einer XML-Variablen mit t-sql?

Sie können das XML in eine Tabellenvariable aufteilen, jeden Knoten separat ersetzen und dann wieder kombinieren.

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(''))