无法获取属性值

时间:2012-12-12 20:18:29

标签: xml sql-server-2008 xquery

我在表格中的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>

我正在尝试从下面的查询中获取Quantity的值但是收到错误 -

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

没有名为Category的元素。我尝试删除/SR/仍然遇到同样的错误。我是XQuery的新手。希望回答只包含.value。我们正在使用SQL Server 2008

1 个答案:

答案 0 :(得分: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