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