2011-01-12 18 views
10

Ich versuche, die unter xml in SQL Server zu analysieren alleXML Parsing mit SQL-Abfrage

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

mit der Abfrage, um die 3 Ids zu erhalten

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

bin die Ergebnisse als 100.010.011.002 bekommen aber Ich möchte die Ergebnisse in einer Spalte oder im CSV-Format haben.

jede Hilfe würde geschätzt werden.

+0

Welchen Datenbankserver benutzen Sie? – Nekresh

+1

Kalt Sie das Schema ändern? wie es einfacher wäre, wenn diese IDS in separaten Zeilen in einer Tabelle wären, d. h. die XML vor dem Einfügen der Daten in die Tabelle analysieren. – Mark

+0

Wenn Ihre Daten als XML gespeichert sind, sollten Sie einen XML-Parser verwenden, anstatt zu versuchen, einen von Hand zu schreiben. Wenn Sie XML nicht benötigen, verwenden Sie ein einfacheres Format. – Borealid

Antwort

8

Mit MS SQL Server erhalten Sie Zeilen.

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) 

Wenn Sie nur wie in diesem Beispiel einen Wert benötigen, ist es viel schneller (dreimal) auf dem text() Knoten zu zerkleinern.

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