2011-01-12 8 views
10

Estoy tratando de analizar el código XML a continuación en el servidor SQL para obtener todos los 3 Idsanálisis XML con la consulta SQL

<Configuration> 
    <ID>1000</ID> 
    <ID>1001</ID> 
    <ID>1002</ID> 
</Configuration> 

utilizando la consulta

SELECT CONFIGURATION.value('/', 'varchar(200)') as SID FROM SCHEDULE 

estoy recibiendo los resultados como 100010011002 pero Me gustaría tener los resultados en una columna o en formato CSV.

se solicitará ayuda.

+0

¿Qué servidor de base de datos está utilizando? – Nekresh

+1

¿Cambiaste el esquema? ya que sería más fácil si esos IDS estuvieran en filas separadas en una tabla, es decir, analizar el XML antes de insertar los datos en la tabla. – Mark

+0

Si sus datos se almacenan como XML, debe usar un analizador XML en lugar de tratar de escribir uno a mano. Si no necesita que sea XML, use un formato más simple. – Borealid

Respuesta

8

Al usar MS SQL Server, esto le dará filas.

declare @xml as xml 
set @xml = 
'<Configuration> 
    <ID>1000</ID> 
    <ID>1001</ID> 
    <ID>1002</ID> 
</Configuration>' 

select 
    x.i.value('.', 'int') as ID 
from @xml.nodes('/Configuration/ID') as x(i) 

Si sólo necesita un valor como en este ejemplo, es mucho más rápido (tres veces) para triturar en el nodo text().

select 
    x.i.value('.', 'int') as ID 
from @xml.nodes('/Configuration/ID/text()') as x(i)