我在表格中的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
答案 0 :(得分:1)
首先,您需要尊重并使用XML数据中定义的XML命名空间。其次,你的XPath中有一个拼写错误(它应该是[@Category="Heavy Load"]
- Heavy
和Load
之间的空格
试试这个:
;WITH XMLNAMESPACES ('http://Country.Regions' AS ns0)
SELECT
XmlData.value('(/ns0:SR/Sale[@Category="Heavy Load"]/@Quantity)[1]', 'int')
FROM Cars