我有一个带有一个 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
但这非常慢。
必须有更好的过滤查询输出的方法。