2012-01-03 16 views

Respuesta

24

Se debe utilizar la query() Method si desea obtener una parte de su 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> 

Si desea que el valor de un nodo específico que debe utilizar value() Method.

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

Resultado:

2 

Actualización:

Si desea triturar el código XML a varias filas que utiliza nodes() Method.

valores para obtener:

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 obtener todo el 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> 
+0

nice, ¿y si cada uno de los nodos de la fila fuera solo y quisiera obtener cada nodo de fila secuencialmente? – kacalapy

+0

Quiero los resultados () no es un número entero, pero quiero obtener row1 xml, y luego row2 ... para todas las filas – kacalapy

+0

@kacalapy - Respuesta actualizada con la forma de triturar XML en varias filas. –

Cuestiones relacionadas