我有一张如下表格:
DECLARE @myTable TABLE (Ordinal INT, MyXML XML)
INSERT INTO @myTable (Ordinal, MyXML) VALUES (1, '<Item AnyAttribute="anyValue">1</Item>')
INSERT INTO @myTable (Ordinal, MyXML) VALUES (1, '<Item AnyAttribute="anyValue">2</Item>')
当我将XML片段加入一个大的XML时:
SELECT MyXML AS 'OmitMe' FROM @myTable FOR XML PATH(''), ROOT('Items'), TYPE
我明白了:
<Items>
<OmitMe>
<Item AnyAttribute="anyValue">1</Item>
</OmitMe>
<OmitMe>
<Item AnyAttribute="anyValue">2</Item>
</OmitMe>
</Items>
但我想得到:
<Items>
<Item AnyAttribute="anyValue">1</Item>
<Item AnyAttribute="anyValue">2</Item>
</Items>
使用变量不是一个选项,因为这意味着必须像光标一样循环机制。
任何帮助将不胜感激!
马丁
编辑:
Ed Harper提供的解决方案可以纳入更大的方案中:
SELECT CAST(REPLACE(CAST((SELECT MyXML AS Items FROM @myTable FOR XML PATH ('')) AS NVARCHAR(MAX)),N'</Items><Items>',N'') AS XML)
这是次优的,但确实有效。
答案 0 :(得分:2)
查看Columns with a Name Specified as a Wildcard Character
如果指定的列名是通配符(*),则为内容 插入该列,就像没有指定列名一样。
SELECT MyXML AS '*' FROM @myTable FOR XML PATH(''), ROOT('Items'), TYPE