如何修改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")')

但是给我"不能在文本上调用方法"错误谢谢你,

如何修改SQL server中的XML节点

你可以这样尝试…

    <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).....