2012-12-20 54 views
5

我有表「文件」具有下列數據的「元數據」字段條款:凡在屬性和價值SQL Server中的XML列篩選

<properties> 
    <property name="someProp">xyz</property> 
    <property name="reportId">55</property> 
    <property name="someOtherProp">abc</property> 
</properties>' 

我怎麼能寫返回記錄查詢一個屬性元素的名稱爲「reportId」,而「reportId」屬性元素的值爲55?有時候,「reportId」屬性節點是唯一存在的,有時不是,它並不總是按上述順序排列,所以我無法查詢絕對位置。有任何想法嗎?

回答

2

沒關係,明白了。供參考:

select * from Document 
where Metadata.value('(/properties/property[@name="reportId"])[1]', 'int') = 55 
5

沒有必要提取值。改爲使用exist() Method (xml Data Type)

select * 
from Document 
where Metadata.exist('/properties/property[@name="reportId" and . = 55]') = 1