使用XPath / XQuery在XML列上过滤SQL查询

前端之家收集整理的这篇文章主要介绍了使用XPath / XQuery在XML列上过滤SQL查询前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个带有一个 XML列的表.我想过滤出 XML中的特定属性与字符串相匹配的行,基本上是做一个WHERE或HAVING.

桌子看起来像这样

| id | xml |

和XML类似的东西

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

我想获取所有的id,其中@name属性与值匹配.

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

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

但这是非常缓慢的.

必须有一个更好的方法来过滤查询输出.

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

我的查询就是

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

猜你在找的XML相关文章