2011-01-12 13 views
10

Próbuję analizować poniżej XML w SQL Server, aby wszystkie 3 identyfikatoryanalizowania XML z zapytania SQL

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

pomocą kwerendy

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

otrzymuję wyniki jako 100010011002 ale chciałbym mieć wyniki w kolumnie lub w formacie CSV.

każda pomoc byłaby przydatna.

+0

Jakiego serwera bazy danych używasz? – Nekresh

+1

Zimno zmieniasz schemat? ponieważ byłoby łatwiej, gdyby IDS znajdowały się w osobnych wierszach w tabeli, tj. parsować kod XML przed wstawieniem danych do tabeli. – Mark

+0

Jeśli twoje dane są przechowywane jako XML, powinieneś użyć parsera XML zamiast próbować pisać jeden ręcznie. Jeśli nie potrzebujesz tego do XML, użyj prostszego formatu. – Borealid

Odpowiedz

8

Użycie serwera MS SQL Server da ci wiersze.

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) 

Jeśli potrzebujesz tylko jedną wartość, jak w tym przykładzie jest to dużo szybciej (trzy razy), do rozdrabniania na węźle text().

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