2
にXMLノードへの参加:SQL Serverの:私は、次のようなテーブルを持っている1つの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>
使用変数は、カーソルのようなループ機構の必要性を示唆するため、オプションではありません。
ご協力いただければ幸いです!
マーティン
EDIT:エド・ハーパーが提供する
ソリューションは、物事の大きなスキームに組み込むことができます。
SELECT CAST(REPLACE(CAST((SELECT MyXML AS Items FROM @myTable FOR XML PATH ('')) AS NVARCHAR(MAX)),N'</Items><Items>',N'') AS XML)
それは次善のだが、それは作業を行います。指定された列名は、ワイルドカード文字(*)である場合
驚くばかり!まさに私が探していたもの。 ;) –
@Martin Giessen完全性のために:あなたは 'SELECT CAST(MyXML AS XML)... 'であっても' SELECT MyXML AS [node()] ...'と同じことになります。 *計算*が無名の列につながるため、2番目の式が機能します。 – Shnugo