Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

избиране на отделен xml възел с помощта на SQL

Трябва да използвате метод query() ако искате да получите част от вашия XML.

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>



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Управление на връзката на SQL Server с C#

  2. Как да задам сортиране за връзка в SQL Server?

  3. MS SQL Server ред GUID колона

  4. Как да направя препратка към псевдоним в клауза WHERE?

  5. Вмъкнете двойни кавички в SQL изхода