SQL Server 2008 查询使用参数从 XML 中选择数据

标签 sql sql-server xml t-sql xpath

我有下一个 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/

相关文章:

java - 如何检查响应是否为 xml 格式而不是 HTML?

sql - 复杂的查询使网站速度极慢

sql - 标签中值出现的次数

sql - 在SQL中显示员工姓名(老板)和员工(下属)人数

sql查询按客户类型获取数据组,如果找不到客户类型需要添加默认值

使用带有 CDATA 部分的 Transformer 的 Java 格式 xml

C# SqlDataReader = 空?

sql - 客户端脚本中的 PSQL lo_import

sql-server - SQL Server Sys.dm_exec_requests DMV 中的读取和写入是什么

Android XML 解析器不解析