3
我刚才发现(必要时)TSQL具有一些功能,可以从包含XML的列中提取数据。我有一个包含XML数据的Sql Server列(尽管列类型不是xml ...它是varchar)。我应该从列中提取一部分数据。简化条目将是这个样子:在Sql Server列中从XML中提取数据
declare @Table as table(id char(1), datacolumn xml)
insert into @table
select 'a', '<root><vnode v="5" /><vnode v="8" /></root>'
insert into @table
select 'b', '<root><vnode v="7" /></root>'
id datacolumn
--- -----------------------------------------
a <root><vnode v="5" /><node v="8" /></root>
b <root><vnode v="7" /></root>
所以,我想拿出一个查询,将沿着线返回的东西:我已经得到的
id data
--- ----
a 5
a 8
b 7
点我可以得到一些信息......但我错过了一些概念。
select id, T.c.value('node[1]', 'varchar(100)') mdata
from @table
cross apply datacolumn.nodes('/root') AS T(c)
问题:
- 这将让我这个虚拟节点(里面是空的),里面的价值,但我需要的属性,标有“V”的值。因为我在那里[1],所以我得到了第一个节点......但我想要所有这些节点......但还没有为这个概念提供帮助。
我知道这应该是简单的,我会错过一些基本的东西!谢谢! – Beska 2010-01-27 15:54:50