用SQL查询替换Xml列中的属性名称
在以下XML示例中,我需要将属性的名称“TimeStamp”替换为“TimeStamp”:用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.
<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="')