我有下一个 XML:
SET @MyXML =
'
<pairs>
<p>
<Name>France</Name>
<Val>Paris</Val>
</p>
<p>
<Name>England</Name>
<Val>London</Val>
</p>
<p>
<Name>Spain</Name>
<Val>Madrid</Val>
</p>
</pairs>
'
我需要以这种方式从此 XML 获取数据 - 我设置了参数“英格兰”并获取“伦敦”。我的代码是下一个,但它不起作用:
SELECT
Tab.Col.query('p/.[(Val)[1] cast as xs:string? = "England"]') AS [Capital]
FROM
@MyXML.nodes('//pairs') Tab(Col)
我想念什么?谢谢!
最佳答案
您的 XQuery 对象构造不正确。这将得到<p>
其中有 <name>
如"England"
然后返回<Val>
标签。
SELECT
Tab.Col.value('((p[Name="England"]/Val/text())[1])', 'varchar(max)') AS [Capital]
FROM
@MyXML.nodes('//pairs') Tab(Col)
关于SQL Server 2008 查询使用参数从 XML 中选择数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38079098/