我的数据库中有一个表,其中一列存储 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/