【发布时间】: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
但速度非常慢。
必须有更好的过滤查询输出的方法。
【问题讨论】:
-
如果您还没有这样做,我还建议您确保您的 XML 列上有索引。 >XML Indexes Overview (SQLServerPedia.com)