1

にxmlが保存されたテーブルがありますNVARCHAR。それはちょうどそのようなものです。

XMLは次のようになります

<Container>
  <Data>
    <SomeNode>val1</SomeNode>
  </Data>
  <Data>
    <SomeNode>val2</SomeNode>
  </Data>
</Container>

基本的に、テーブル内のすべての xml 文字列からすべての val1...valX を照会する必要があります。

これまでのところ、私は思いつくことができました

SELECT CAST(XmlColumn AS XML).query('//SomeNode') FROM ThatTableWithXmlInStrings 

ノードのリストのリストが表示されます。そして、ここで私は迷っています:どうすればそれを単一の値にフラット化できますか?

4

2 に答える 2

3
select T2.X.value('text()[1]', 'nvarchar(10)')
from ThatTableWithXmlInStrings
  cross apply (select cast(XmlColumn as xml)) T1(X)
  cross apply T1.X.nodes('/Container/Data/SomeNode') as T2(X)
于 2013-03-05T09:49:54.490 に答える
0

次の 2 つの方法があります。

  1. text() 関数を xquery に追加します
  2. ノードメソッドを使用リンク
于 2013-03-05T09:20:57.033 に答える