用SQL查询解析XML

10

我正在尝试在SQL Server中解析以下XML以获取所有3个ID。

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

使用查询语句

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

我得到的结果是100010011002,但我希望把结果以列或CSV格式显示。

非常感谢任何帮助。


你使用的是哪个数据库服务器? - Nekresh
1
你能否更改架构?如果这些ID在表中分别位于不同的行中,即在将数据插入表之前解析XML,那么这将更容易。 - mmmmmm
如果您的数据以XML格式存储,则应使用XML解析器,而不是尝试手动编写一个。 如果您不需要它是XML,则使用更简单的格式。 - Borealid
1个回答

8
使用 MS SQL Server,这将为您提供行。
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)

如果您只需要一个值,就像这个例子一样,使用text()节点进行解析会更快(快三倍)。
select
    x.i.value('.', 'int') as ID
from @xml.nodes('/Configuration/ID/text()') as x(i)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接