【问题标题】:Filter SQL queries on the XML column using XPath/XQuery使用 XPath/XQuery 过滤 XML 列上的 SQL 查询
【发布时间】:2010-12-16 08:14:30
【问题描述】:

我有一个包含一个 XML 列的表。我想过滤掉 XML 中特定属性与字符串匹配的行,本质上是在执行 WHERE 或 HAVING。

表格看起来像这样

| id | xml |

和 XML 类似的东西

<xml>
  <info name="Foo">
    <data .../>
  </info>
<xml>

我想获取所有 @name 属性匹配值的 id。

我已经能够做到以下几点:

SELECT id, xml.query('data(/xml/info/@name)') as Value
FROM Table1
WHERE CAST(xml.query('data(/xml/info/@name)') as varchar(1024)) = @match

但速度非常慢。

必须有更好的过滤查询输出的方法。

【问题讨论】:

标签: sql xpath xquery


【解决方案1】:

找到了。而不是使用 query() 我应该使用exist()

我的查询将是

SELECT id, xml.query('data(/xml/info/@name)') as Value
FROM Table1
WHERE xml.exist('/xml/info/[@name=sql:variable("@match")]') = 1

【讨论】:

    猜你喜欢
    • 2015-09-29
    • 2011-08-31
    • 1970-01-01
    • 2018-08-24
    • 1970-01-01
    • 2017-03-06
    • 2022-01-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多