テーブルには複数の行があり、それぞれに共通のスキーマに基づくxmlが含まれています。XMLの例は次のとおりです。
<Items>
<Item>Item 1</Item>
<Item>Item 2</Item>
</Items>
Item
テーブルに複数の行があり、すべてに同様のxmlが含まれている場合、単一の結果セットで、すべての行のノード内のすべての値を返すクエリを作成できますか?SQL Server2008R2を使用しています
テーブルには複数の行があり、それぞれに共通のスキーマに基づくxmlが含まれています。XMLの例は次のとおりです。
<Items>
<Item>Item 1</Item>
<Item>Item 2</Item>
</Items>
Item
テーブルに複数の行があり、すべてに同様のxmlが含まれている場合、単一の結果セットで、すべての行のノード内のすべての値を返すクエリを作成できますか?SQL Server2008R2を使用しています
xmlがXML
列で定義されている場合..
DECLARE @Items AS TABLE
(
ItemXml XML
)
-- test data with a couple rows of xml
INSERT INTO @Items(ItemXml)
VALUES ('<Items><Item>Item 1</Item><Item>Item 2</Item></Items>')
,('<Items><Item>Item 3</Item><Item>Item 4</Item></Items>')
-- the query
SELECT t.i.value('.','VARCHAR(8000)') AS Item
FROM @Items CROSS APPLY ItemXml.nodes('/Items/Item') t(i)
あなたに与えます
Item
------
Item 1
Item 2
Item 3
Item 4
ここで重要なのnodes()
は
xmlデータ型インスタンスをリレーショナルデータに細断処理する場合に便利です。これにより、新しい行にマップされるノードを識別できます。