2012-12-12 222 views
1

我有一個表中XML類型的列XMLDATA以下數據 -無法獲取屬性值

<ns0:SR xmlns:ns0="http://Country.Regions" 
    xmlns:Country="http://Country.Regions/Types"> 
    <Sale Category="Heavy Load" Quantity="1" Value="110" /> 
</ns0:SR> 

我想從下面的查詢獲取量的值,但得到一個錯誤 -

select 
    XmlData.value('(/SR/Sale[@Category="HeavyLoad"]/@Quantity)[1]', 'int')  
from Cars 

沒有名爲Category的元素。我試圖刪除/SR/仍然收到相同的錯誤。我是XQuery的新手。希望答案只包含使用.value。我們正在使用SQL Server 2008

+1

我編輯了自己的冠軍。請參閱:「[應該在其標題中包含」標籤「](http://meta.stackexchange.com/questions/19190/)」,其中的共識是「不,他們不應該」。 –

回答

1

首先,您需要尊重並使用XML數據中定義的XML名稱空間。其次,你有你的XPath一個錯字(應該是[@Category="Heavy Load"] - 用空間HeavyLoad之間

試試這個:

;WITH XMLNAMESPACES ('http://Country.Regions' AS ns0) 
SELECT 
    XmlData.value('(/ns0:SR/Sale[@Category="Heavy Load"]/@Quantity)[1]', 'int') 
FROM Cars 
+1

謝謝marc。像魅力一樣工作。將照顧錯字,:) – VKarthik