sql >> Database teknologi >  >> RDS >> Sqlserver

valg af individuel xml-node ved hjælp af SQL

Du skal bruge query()-metoden hvis du ønsker at få en del af 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>

Hvis du vil have værdien fra en bestemt node, skal du bruge value() Method .

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

Resultat:

2

Opdatering:

Hvis du vil makulere din XML til flere rækker, bruger du nodes() Method .

Sådan får du værdier:

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

For at hente hele 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. Hent kolonnenavn, som har den maksimale værdi i en række sql

  2. Hvordan finder man ikke-eksisterende data fra en anden tabel ved at JOIN?

  3. Hvornår spoler SQL Server-sortering tilbage?

  4. Er urlencode() god nok til at stoppe alle SQL-injektionsangreb i år 2011