【问题标题】:Changing xml node value in SQL with xquery [SQL Server]使用 xquery [SQL Server] 在 SQL 中更改 xml 节点值
【发布时间】:2011-03-14 12:36:49
【问题描述】:

我在表格列之一中有示例 XML:

<Root>
   <A>
      <C>c</C>
      <D>d</D>
   </A>
   <B>b</B>
</Root>

如何将 A 节点的值替换为类似的值:

<Root>
   <A>
      <E>e</E>
      <F>f</F>
   </A>
   <B>b</B>
</Root>

我尝试了以下解决方案

DECLARE @var varchar(100);
SET @var = '<E>e</E><F>f</F>'
SET @xml.modify('replace value of (/Root/A/text())[1] with sql:variable("@var")');

但它没有工作......

问候

【问题讨论】:

  • 如果这是 SQL-Server,那么这不是 XQuery 更新问题,而是 XML 数据修改语言 (XML DML)

标签: sql sql-server xml xml-dml


【解决方案1】:

我认为不可能使用replace 来替换节点,只能替换值。 您可以使用delete,然后使用insert

declare @xml as xml = '
<Root>
  <A>
    <C>c</C>
    <D>d</D>
  </A>
  <B>b</B>
</Root>'

declare @var xml
set @var = '<E>e</E><F>f</F>'

set @xml.modify('delete /Root/A/*')
set @xml.modify('insert sql:variable("@var") into (/Root/A)[1]')

select @xml

【讨论】:

    猜你喜欢
    • 2011-07-26
    • 2017-06-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-30
    • 1970-01-01
    • 1970-01-01
    • 2017-01-03
    相关资源
    最近更新 更多