如何在SQL Server中重命名XML节点名称

时间:2011-09-06 08:03:36

标签: sql-server xml tsql

我的数据库中有一个表,其中一列存储XML数据。由于源代码的更改,我们希望重命名一个特定的XML节点名称和XML命名空间。让我们说我有下面的XML:

<MediaClass xmlns="MediaClass/1">   
    <Media>
        <Title>Test</Title>
        <Type>Book</Type>
        <Price>1.00</Price>
    </Media>
</MediaClass>

如何重命名Node MediaClass 名称,让我们说预订并更改名称空间值?

所以它看起来像:

<Book xmlns="Book/1">   
    <Media>
        <Title>Test</Title>
        <Type>Book</Type>
        <Price>1.00</Price>
    </Media>
</Book>

我需要完全在T-SQL中完成,因为它将用作迁移脚本。我们客户安装的最小SQL Server是SQL Server 2005。

1 个答案:

答案 0 :(得分:6)

我不知道XML DML

是否可行

您可能会使用replace代替。

update YourTable set
  XMLCol = replace(replace(cast(XMLCol as nvarchar(max)), 
                           '<MediaClass xmlns="MediaClass/1">', 
                           '<Book xmlns="Book/1">'), 
                   '</MediaClass>', 
                   '</Book>')