sql >> Databasteknik >  >> RDS >> Sqlserver

välja enskild xml-nod med SQL

Du bör använda query()-metoden om du vill få en del av din XML.

declare @XML xml

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

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

Resultat:

<row2>
  <value>2</value>
</row2>

Om du vill ha värdet från en specifik nod bör du använda value() Method .

select @XML.value('(/root/row2/value)[1]', 'int')

Resultat:

2

Uppdatering:

Om du vill strimla din XML till flera rader använder du nodes() Method .

För att få värden:

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)

Resultat:

(No column name)
1
2

Så här hämtar du hela XML:

select T.N.query('.')
from @XML.nodes('/root/row') as T(N)

Resultat:

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



  1. Oracle DataAccess-relaterat:Den anropade medlemmen stöds inte i en dynamisk sammansättning.

  2. Parvis array summa aggregerad funktion?

  3. Hur kan jag tvinga en fråga att inte använda ett index på en given tabell?

  4. Finns det något sätt att förbättra en MERGE-fråga?