用SQL查询替换Xml列中的属性名称

用SQL查询替换Xml列中的属性名称,xml,sql-server-2008,Xml,Sql Server 2008,在以下XML示例中,我需要将属性的名称“TimeStamp”替换为“TimeStamp”: <CMD CommandID="6000"> <DATA> <ReportData Key="10000"> <Event TimeStamp="2013-03-07 15:42:49.000" Name="ABC" /> <Event TimeStamp="2013-03-07 15:42:50.

在以下XML示例中,我需要将属性的名称“TimeStamp”替换为“TimeStamp”:

<CMD CommandID="6000">
   <DATA>
      <ReportData Key="10000">
         <Event TimeStamp="2013-03-07 15:42:49.000" Name="ABC" />
         <Event TimeStamp="2013-03-07 15:42:50.000" Name="DEF" />
         <Event TimeStamp="2013-03-07 16:22:03.000" Name="GHI" />
      <ReportData>
   <DATA>
<CMD>
谢谢您的帮助。

您可以使用

更新MyDatabase.dbo.MyTable
设置MyXMLColumn=replace(强制转换(MyXMLColumn为nvarchar(max)),“您可以使用

更新MyDatabase.dbo.MyTable

设置MyXMLColumn=replace(强制转换(MyXMLColumn为nvarchar(max)),'您不能这样做;您可以更新元素和属性的值,但不能更改XML中的属性名称您不能这样做;您可以更新元素和属性的值,但不能更改XML中的属性名称。这不是三年来一直为+1吗?很好的解决方案这不是三年来一直为+1吗?很好的解决方案激动
DECLARE @variable NVARCHAR(20) = 'Timestamp'

UPDATE MyDatabase.dbo.MyTable
SET MyXmlColumn.modify('replace value of (/CMD/DATA/ReportData/Event/@TimeStamp) with sql:variable("@variable") ')
update MyDatabase.dbo.MyTable
set MyXMLColumn = replace(cast(MyXMLColumn as nvarchar(max)), '<Event TimeStamp="', '<Event Timestamp="')