Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

sélection d'un nœud xml individuel à l'aide de SQL

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>