2013-02-19 2 views
1
<Root> 
    <Sub> 
     <Name>a</Name> 
     <Value>1</Value> 
    </Sub> 
    <Sub> 
     <Name>b</Name> 
     <Value>2</Value> 
    </Sub> 
</Root> 

Я знаю, что могу сделатьфильтр на более чем один XML элемент

SELECT * FROM table WHERE column.exist('/Root/Sub[Name="a" and Value="1"]') = 1 

но как фильтр по обе пары имя/значение? a/1 и b/2?

+0

Похожий вопрос ответил здесь: http://stackoverflow.com/questions/6162273/search-for-multiple-values-in-xml-column-in -SQL – alxK

ответ

2

Как насчет:

SELECT * FROM table WHERE (column.exist('/Root/Sub[Name="a" and Value="1"]') = 1 OR (column.exist('/Root/Sub[Name="b" and Value="2"]') = 1)

Примечание дополнительные скобки.

-1

Это будет работать, как ожидалось:

SELECT * 
    FROM TableName 
WHERE XMLColumnName.Exist('/Root/Sub[Id = "IdValue"][LimitType = "LimitTypeName"]') = 1 
Смежные вопросы