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

Aktualisieren von XML-Attributen mit neuen Werten in einer SQL Server 2008-Tabelle

Aus den frühen Versionen Ihrer Frage sieht es so aus, als ob sich Ihr XML tatsächlich in verschiedenen Zeilen einer Tabelle befindet. Wenn das der Fall ist, können Sie dies verwenden.

update YourTable set
  XMLText.modify('replace value of (/Identification/@Age)[1] with "40"')
where XMLText.value('(/Identification/@Age)[1]', 'int') = 30

Arbeitsbeispiel mit einer Tabellenvariablen.

declare @T table(XMLText xml)

insert into @T values('<Identification Name="John"  Family="Brown"   Age="30" />')
insert into @T values('<Identification Name="Smith" Family="Johnson" Age="35" />') 
insert into @T values('<Identification Name="Jessy" Family="Albert"  Age="60" />')
insert into @T values('<Identification Name="Mike"  Family="Brown"   Age="23" />')
insert into @T values('<Identification Name="Sarah" Family="Johnson" Age="30" />')

update @T set
  XMLText.modify('replace value of (/Identification/@Age)[1] with "40"')
where XMLText.value('(/Identification/@Age)[1]', 'int') = 30

select *
from @T