SQL Server 2008R2 または 2012
返される各項目が行ではなく新しい列である複数の行ではなく、単一の行として XML ノード クエリを返すことは可能ですか?
たとえば、XML フィールドには次の XML 構造が含まれます。
<MetaFieldData>
<MetaField>
<Name>Volume</Name>
<Value>Large</Value>
</MetaField>
<MetaField>
<Name>Code</Name>
<Value>3DP</Value>
</MetaField>
<MetaField>
<Name>Photo</Name>
<Value>foo.png</Value>
</MetaField>
<MetaField>
<Name>CommonName</Name>
<Value>Foo Bar</Value>
</MetaField>
</MetaFieldData>
次の SQL を使用します。
select
m.value('Name[1]', 'varchar(100)') as Name,
m.value('Value[1]', 'varchar(max)') as Value
from MyTable
cross apply MetaFieldData.nodes('/MetaFieldData/MetaField') as Meta(m)
where Id = 1
結果セットは次を返します。
Name Value
--------------------
Volume Large
Code 3DP
Photo foo.png
CommonName Foo Bar
結果セットを次のように返します。
Volume Code Photo CommonName
----------------------------------------------
Large 3DP foo.png Foo Bar