2011-01-12 16 views
10

Sto cercando di analizzare il codice XML di seguito in SQL Server per ottenere tutti i 3 IdsXML analisi con query SQL

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

utilizzando la query

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

che ottiene i risultati come 100.010.011.002 ma mi piacerebbe avere i risultati in una colonna o in un formato CSV.

qualsiasi aiuto sarebbe appagato.

+0

Che server di database stai utilizzando? – Nekresh

+1

Cold si modifica lo schema? come sarebbe più facile se quegli ID fossero in righe separate in una tabella i.e analizza l'XML prima di inserire i dati nella tabella. – Mark

+0

Se i tuoi dati sono archiviati come XML, dovresti usare un parser XML invece di provare a scriverne uno a mano. Se non hai bisogno che sia XML, usa un formato più semplice. – Borealid

risposta

8

Utilizzando MS SQL Server, questo vi darà le righe.

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) 

Se avete solo bisogno di un valore come in questo esempio è molto più veloce (tre volte) per distruggere sul nodo text().

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