1

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
4

1 に答える 1