这是我的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。感谢
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
答案 0 :(得分:2)
这应该有效:
SELECT x.y.value('text()[1]', 'varchar(5)') Mycolumn
FROM @xml.nodes('root/row') x(y)
生成行的nodes
方法中的路径应该是root/row
,这样生成三行,对于行中的每个值,表达式text()[1]
应该提取它的值