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>

我正在尝试从以下查询中获取 Quantity 的值,但出现错误-

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

没有名为 的元素Category。我尝试删除/SR/仍然得到相同的错误。我是 XQuery 的新手。仅包含使用的答案将不胜感激.value。我们正在使用 SQL Server 2008

4

1 回答 1

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
于 2012-12-12T20:26:21.890 回答