Vous devez utiliser la méthode query() si vous voulez obtenir une partie de votre XML.
declare @XML xml
set @XML =
'
<root>
<row1>
<value>1</value>
</row1>
<row2>
<value>2</value>
</row2>
</root>
'
select @XML.query('/root/row2')
Résultat :
<row2>
<value>2</value>
</row2>
Si vous souhaitez obtenir la valeur d'un nœud spécifique, vous devez utiliser la méthode value() .
select @XML.value('(/root/row2/value)[1]', 'int')
Résultat :
2
Mise à jour :
Si vous souhaitez déchiqueter votre XML en plusieurs lignes, vous utilisez la méthode nodes() .
Pour obtenir des valeurs :
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)
Résultat :
(No column name)
1
2
Pour obtenir l'intégralité du XML :
select T.N.query('.')
from @XML.nodes('/root/row') as T(N)
Résultat :
(No column name)
<row><value>1</value></row>
<row><value>2</value></row>