2009-11-02 15 views
5

tengo un XML como esto:Cómo obtener el valor de atributo con XQuery en MS SQL Server 2008

<EXP> 
    <TITLES> 
    <SUBTITLE CL="AXT4" FL="1" NB="Text 1"/> 
    </TITLES> 
    <TITLES> 
    <SUBTITLE CL="BVT6" FL="2" NB="Text 2"/> 
    </TITLES> 
    <TITLES> 
    <SUBTITLE CL="PLO7" FL="3" NB="Text 3"/> 
    </TITLES> 
</EXP> 

El uso de XQuery en SQL Server 2008, ¿Cómo puedo seleccionar sólo el valor del atributo NB en una lista, por filas (necesito todos los valores posibles),

Ejemplo:

- Subtítulos -

Texto 1

Texto 2

texto 3

Respuesta

8
DECLARE @x xml; 
SET @x = N'<EXP> 
    <TITLES> 
    <SUBTITLE CL="AXT4" FL="1" NB="Text 1"/> 
    </TITLES> 
    <TITLES> 
    <SUBTITLE CL="BVT6" FL="2" NB="Text 2"/> 
    </TITLES> 
    <TITLES> 
    <SUBTITLE CL="PLO7" FL="3" NB="Text 3"/> 
    </TITLES> 
</EXP> 
'; 

SELECT 
    t.c.value(N'@NB', N'nvarchar(10)') AS Subtitles 
FROM 
    @x.nodes(N'/EXP/TITLES/SUBTITLE') t(c); 

Los nodes jirones de expresión en filas, y el value recupera el valor de la columna.

Cuestiones relacionadas