sql-server - 如何重命名 SQL Server 中的 XML 节点名称

标签 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>

我如何重命名节点 MediaClass 名称让我们说 Book 并更改 namespace 值?

所以它看起来像:

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

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

最佳答案

我不知道 XML DML 是否可行

使用 replace 可能对您有用相反。

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

关于sql-server - 如何重命名 SQL Server 中的 XML 节点名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7316712/

相关文章:

sql - WHERE ID = MAX(ID) 获取错误聚合可能不会出现

Sql:从两个表中选择数据而不重复第一个表的值?

android - 如何在xml动画文件中指定fromXType属性

xml - NSXMLParser,两个相同的元素有帮助!

tsql - 使用 T-SQL 将值拆分为多行的问题

sql-server - SQL Server 中基于 empid wise 的连续行之间的分钟差异

sql - 以不同的顺序在多列中查找匹配项

python - 如何使用 minidom 读取具有属性的 XML 标签的值

sql-server - 使用 union 和 tempdb 进行整理

sql-server - TSQL 如何按文字分组?