通过xml查询选择

时间:2013-10-21 04:38:07

标签: sql-server xml

我有

declare @xml_var varchar(4000) 
set  @xml_var =  
'<Text  ID = "1">
<Good Number ="Number_0"/>
<Good Number ="Number_1"/>
<Good Number ="Number_2"/>
<Good Number ="Number_3"/>
</Text>' 

我尝试做一个返回非xml输出的脚本,如下所示

Number_0
Number_1
Number_2
Number_3

我该怎么办?

我试试

SELECT 
good.value('@Number', 'nvarchar(50)') as Number
FROM @xml_var.nodes('/Text') col(Text)

我现在无法访问sql server,稍后会再访问

好的,我有解决方案,但是当我尝试

declare @string varchar(8000)
declare @xml_var xml;  
set  @string =  
'<Text  ID = "1">
<Good Number ="Number_0"/>
<Good Number ="Number_1"/>
<Good Number ="Number_2"/>
<Good Number ="Number_3"/>
</Text>'
SET @xml_var = @string;
SELECT Data.Col.value('@Number', 'nvarchar(100)') AS Number
FROM @xml_var.nodes('/Text/Good') AS Data(Col)

出现sql小提琴错误

1 个答案:

答案 0 :(得分:2)

首先,您必须将变量/列声明为XML而不是VARCHAR

然后你的查询应该是这样的:

SELECT T.N.value('@Number', 'nvarchar(100)') AS Number
FROM @xml_var.nodes('/Text/Good') AS T(N)

工作DEMO。当您无权访问数据库时,可以使用SQL Fiddle测试类似的查询。