10
我有一个包含一个XML列的表。我想过滤掉XML中某个特定属性匹配字符串的行,本质上是做一个WHERE或HAVING。使用XPath/XQuery在XML列上过滤SQL查询
表看起来是这样的
| 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索引概述(SQLServerPedia.com)](http://sqlserverpedia.com/wiki/XML_Indexes_Overview) – Kev 2009-11-13 16:07:07