2013-10-21 91 views
0

选择我通过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>' 

我尝试做一个脚本,返回这样

Number_0 
Number_1 
Number_2 
Number_3 

我该怎么办呢非XML输出?

我尝试

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

我没有访问SQL Server现在,这将是以后

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

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

解决方案“我现在无法访问sql server” - > http://sqlfiddle.com –

回答

2

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

然后将查询应该看起来像:

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

工作DEMO。当你无法访问数据库时,可以使用SQL Fiddle来测试那样的查询。

+0

谢谢。我用过,但我声明变量在左边的列 – ifooi

+0

XML变量是逻辑的。非常感谢,但要纠正。但我没有创造这个任务。 varchar变量有灵魂吗?或者说总是错的? – ifooi

+0

您可以随时从'varchar'创建XML:https://www.simple-talk.com/sql/database-administration/converting-string-data-to-xml-and-xml-to-string-data/ – MarcinJuraszek