如何修改SQL server中的XML节点
本文关键字:server 中的 XML 节点 SQL 何修改 修改 | 更新日期: 2023-09-27 18:15:14
在我的表中有一个名为" Content_Html "的xml列,其中的数据看起来像:
<root>
<Category>Cover Impression</Category>
<Title>Mystery of the Wolves</Title>
<Month>April</Month>
...
...
</root>
我试图将<Category>
下的元素从封面印象替换为封面印象,替换后,我的表与此类别应该看起来像
<Category>Cover Impressions</Category>
我检查了这篇文章(http://stackoverflow.com/questions/7316712/how-to-rename-xml-node-name-in-a-sql-server)为我的问题,但不完全是我要找的。
谁能给我指个方向吗?
在下面的建议之后,我尝试了这个:
declare @newValue XML
select @newValue = 'Cover Impressions'
update dbo.content
set content_html.modify('replace value of (/root/Category/text())[1] with sql:variable("@newValue")')
但是给我"不能在文本上调用方法"错误谢谢你,
你可以这样尝试…
<Sample>
<NodeOne>Value1</NodeOne>
<NodeTwo>Value2</NodeTwo>
<NodeThree>OldValue</NodeThree>
</Sample>
将NodeThree中的' OldValue '替换为' NewValue '。
DECLARE @newValue varchar(50)
SELECT @newValue = 'NewValue'
UPDATE [Product]
SET ProductXml.modify('replace value of (/Sample/NodeThree/text())[1] with sql:variable("@newValue")')
Update:您可以尝试(但是请 -首先在TEST环境中!)只是简单地将列的数据类型更改为XML:
ALTER TABLE dbo.YourTable
ALTER COLUMN Content_Html XML
如果在该列的所有行中只有有效的XML内容,则该命令应该可以工作。
一旦工作,然后你可以在你的具体例子中尝试这个:
UPDATE dbo.YourTable
SET Content_Html.modify('replace value of (/root/Category/text())[1] with "Cover Impressions"')
WHERE ...(whatever condition need here).....