2
我有一个表,如下所示:SQL Server的FOR XML:加入XML节点到一个XML
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>
使用变量不是一个选项,因为这意味着像游标一样循环mechinisme的必要性。
任何帮助将不胜感激!
马丁
编辑:
由Ed哈珀提供一个解决方案可以被纳入的东西更大的计划:
SELECT CAST(REPLACE(CAST((SELECT MyXML AS Items FROM @myTable FOR XML PATH ('')) AS NVARCHAR(MAX)),N'</Items><Items>',N'') AS XML)
这是次优的,但它确实工作。
太棒了!正是我在找什么。 ;) –
@Minin Giessen为了完整性:你可以用'SELECT MyXML AS [node()] ...'和'SELECT CAST(MyXML AS XML)...'来达到同样的效果。第二个工作,因为*计算*导致一个未命名的列。 – Shnugo