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

时间:2013-03-15 12:23:40

标签: 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.000" Name="DEF" />
         <Event TimeStamp="2013-03-07 16:22:03.000" Name="GHI" />
      <ReportData>
   <DATA>
<CMD>

它存储在XML类型的列中的SQL Server 2008数据库中。

我试过这样的事情,但这是不正确的:

DECLARE @variable NVARCHAR(20) = 'Timestamp'

UPDATE MyDatabase.dbo.MyTable
SET MyXmlColumn.modify('replace value of (/CMD/DATA/ReportData/Event/@TimeStamp) with sql:variable("@variable") ')

感谢您的帮助。

1 个答案:

答案 0 :(得分:4)

您可以使用replace

update MyDatabase.dbo.MyTable
set MyXMLColumn = replace(cast(MyXMLColumn as nvarchar(max)), '<Event TimeStamp="', '<Event Timestamp="')