Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

selecionando o nó xml individual usando SQL


Você deve usar o método query() se você quiser obter uma parte do seu XML.
declare @XML xml

set @XML = 
'
<root>
  <row1>
    <value>1</value>
  </row1>
  <row2>
    <value>2</value>
  </row2>
</root>
'

select @XML.query('/root/row2')

Resultado:
<row2>
  <value>2</value>
</row2>

Se você quiser o valor de um nó específico, use o método value() .
select @XML.value('(/root/row2/value)[1]', 'int')

Resultado:
2

Atualização:

Se você quiser fragmentar seu XML em várias linhas, use o nodes() Method .

Para obter valores:
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)

Resultado:
(No column name)
1
2

Para obter todo o XML:
select T.N.query('.')
from @XML.nodes('/root/row') as T(N)

Resultado:
(No column name)
<row><value>1</value></row>
<row><value>2</value></row>