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 に答える