【问题标题】:Adding multiple attributes in XML node在 XML 节点中添加多个属性
【发布时间】:2013-05-02 09:45:23
【问题描述】:

我想为所有节点添加两个新属性。所有元素的属性名称和值都相同。

我有以下 XML 结构:

<question id="1001"></question>
<question id="1002"></question>
<question id="1003"></question>
<question id="1004"></question>

并希望将其转换如下:

<question id="1001" test1="1" test2="2"></question>
<question id="1002" test1="1" test2="2"></question>
<question id="1003" test1="1" test2="2"></question>
<question id="1004" test1="1" test2="2"></question>

我无法在文档中找到如何添加多个属性的示例,因此我只添加了第一个:

SELECT T.c.modify('insert attribute test1 {"1"} into (/question)[1]')
FROM @SetQuestionsAndAnswersDetailsXML.nodes('/question') T(c)

但我收到以下错误:

Msg 8137, Level 16, State 1, Line 89
Incorrect use of the XML data type method 'modify'. A non-mutator method is expected in this context.

有人知道我做错了什么吗?

【问题讨论】:

    标签: xml tsql insert sql-server-2012


    【解决方案1】:

    不幸的是,

    xml数据类型的modify()方法只能在SET中使用 UPDATE 语句的子句。

    所以,我需要创建一个表变量,在那里插入记录,然后修改 xmls。

    为了在一个 modify insert 语句中添加多个属性,您可以使用以下语法:

    UPDATE @TempTable
    SET XMLColumn.modify('insert (attribute test1 {"1" },attribute test2 {"2"}) into (/question)[1]')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-09-16
      • 1970-01-01
      相关资源
      最近更新 更多