3

我只是在学习 XQUERY 并尝试完成我认为非常简单的事情。这是我的 T-SQL 代码:

DECLARE @XML xml
set @xml = '<resultsets><AppVersion>13.0</AppVersion></resultsets>'

-- Code below is wrong
select 
ResultSets.AppVersion.query('AppVersion').value('.', 'varchar(100)') as AppVersion
from @XML.nodes('/resultsets/AppVersion') ResultSets(AppVersion)

我无法确切知道如何查询该内部元素 appversion。我没有收到任何错误,但我无法在 appversion 内部元素中返回 13.0。有人可以帮忙吗?

4

2 回答 2

2

如果您只想要一行结果,则无需使用nodes.

DECLARE @XML xml
set @xml = '<resultsets><AppVersion>13.0</AppVersion></resultsets>'

select @XML.value('(/resultsets/AppVersion)[1]', 'varchar(100)') as AppVersion
于 2011-12-21T13:22:26.930 回答
2

你有AppVersion太多了。这将返回您的13.0

DECLARE @XML xml
set @xml = '<resultsets><AppVersion>13.0</AppVersion></resultsets>'

-- Code below is right
select 
ResultSets.AppVersion.value('.', 'varchar(100)') as AppVersion
from @XML.nodes('/resultsets/AppVersion') ResultSets(AppVersion)

您的nodes方法已经深入到AppVersion节点,因此从那里您不需要进一步queryvalue.

于 2011-12-21T13:02:57.287 回答