如何以表格格式显示xml数据

时间:2013-03-05 11:39:15

标签: sql-server xquery

这是我的xml,我希望以表格形式显示

DECLARE @xml XML 
SET @xml = '<root>
  <row>one</row>
  <row>two</row>
  <row>three</row>
</root>'

SELECT 
    x.y.value('(row/text())[1]', 'varchar(5)')
FROM @xml.nodes('root') x(y)

它只显示第一行。 我想显示像

这样的数据
Mycolumn
-----------
one
two
three

请指导我在我的sql中需要更改的内容。感谢

我不能像下面那样用xquery发出select into

DECLARE @xml XML 
SET @xml = '<root>
  <row>one</row>
  <row>two</row>
  <row>three</row>
</root>'

SELECT *
INTO #Fields
FROM (SELECT 
    x.y.value('text()[1]', 'varchar(5)') as fields11
FROM @xml.nodes('root/row') x(y))

SELECT * FROM #Fields
DROP TABLE #Fields

但我可以像下面那样使用插入xuqery

DECLARE @xml XML 
SET @xml = '<root>
  <row>one</row>
  <row>two</row>
  <row>three</row>
</root>'

CREATE TABLE #Fields(Field varchar(MAX))

INSERT INTO #Fields
SELECT 
    x.y.value('text()[1]', 'varchar(5)') 
FROM @xml.nodes('root/row') x(y)

SELECT * FROM #Fields
DROP TABLE #Fields

所以任何人都可以帮我用xquery构建select into。感谢

现在选择使用XQUERY

DECLARE @xml XML 
SET @xml = '<root>
  <row>one</row>
  <row>two</row>
  <row>three</row>
</root>'

SELECT  x.y.value('text()[1]', 'varchar(5)') Mycolumn into #Fields
FROM    @xml.nodes('root/row') x(y)

select * from #Fields
drop table #Fields

1 个答案:

答案 0 :(得分:2)

这应该有效:

SELECT  x.y.value('text()[1]', 'varchar(5)') Mycolumn
FROM    @xml.nodes('root/row') x(y)

生成行的nodes方法中的路径应该是root/row,这样生成三行,对于行中的每个值,表达式text()[1]应该提取它的值