我有
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小提琴错误
答案 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测试类似的查询。