【问题标题】:Is it possible to replace an entire node with SQL DML?是否可以用 SQL DML 替换整个节点?
【发布时间】:2015-06-12 11:06:47
【问题描述】:

我对 SQL DML 非常陌生,如果可以的话,我可以使用任何帮助来辨别。

declare @xml XML, @id int, @new XML
SET @id = 2
SET @xml = '<root><node ids=1><child /></node><node ids=2><child /></node></root>'
SET @new = '<node ids=2,3><child /></node>'

我想将根节点外的整个节点元素设置为与@new 相同,但我无法确定 SQL DML 的语法。我知道以下原因不起作用,但认为它几乎是我试图执行的功能的伪代码。

SET @xml.modify('replace value of (/root/node[@id=sql:variable("@id")]) with sql:variable(@new)')

我的语法错误可能比我意识到的要多,因为我还不熟悉这些东西。我知道它希望我为无类型的值指定 /text(),但我也想替换包装的“节点”标签,并且它应该在第一个带有 [1] 之后。处理这种调用的正确语法是什么?

【问题讨论】:

    标签: sql sql-server sql-server-2008 dml


    【解决方案1】:

    你可以deletenode子元素然后插入新的node元素

    SET @xml.modify(' delete (/root/node)');
    SET @xml.modify('insert  sql:variable("@new") into (/root)[1]  ')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-17
      • 2018-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多