多くのノードを持つ大きなXMLノートがあります。
より大きなXMLから単一のノードとそのすべてのコンテンツのみを選択できる方法はありますか?
sQL 2005を使用しています
XMLの一部を取得する場合は、 query()メソッド を使用する必要があります。
declare @XML xml
set @XML =
'
<root>
<row1>
<value>1</value>
</row1>
<row2>
<value>2</value>
</row2>
</root>
'
select @XML.query('/root/row2')
結果:
<row2>
<value>2</value>
</row2>
特定のノードからの値が必要な場合は、 value()メソッド を使用する必要があります。
select @XML.value('(/root/row2/value)[1]', 'int')
結果:
2
更新:
XMLを複数の行に細断処理する場合は、 nodes()メソッド を使用します。
値を取得するには:
declare @XML xml
set @XML =
'
<root>
<row>
<value>1</value>
</row>
<row>
<value>2</value>
</row>
</root>
'
select T.N.value('value[1]', 'int')
from @XML.nodes('/root/row') as T(N)
結果:
(No column name)
1
2
XML全体を取得するには:
select T.N.query('.')
from @XML.nodes('/root/row') as T(N)
結果:
(No column name)
<row><value>1</value></row>
<row><value>2</value></row>