2012-01-26 10 views
2

SQL Server 2005データベースのテーブルのxml型の列にあるxmlの下にあるTypeの値を選択します。Xpath SQL Serverクエリ

<Something xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <Id xmlns="http://something.com/">1921</Id> 
    <Date xmlns="http://something.com/">1901-01-01T00:00:00Z</Date> 
    <Schedule xmlns="http://something.com/">Region</Schedule> 
    <Filters xmlns="http://something.com/"> 
    <Data> 
     <Id>99999</Id> 
     <Name>CS</Name> 
     <Type>SomeType</Type> 
    </Data> 
    </Filters> 
</Something> 

答えて

2

このような何か試してみてください:

;WITH XMLNAMESPACES ('http://something.com/' AS xn) 
SELECT 
    XmlType = XmlColumn.value('(Something/xn:Filters/xn:Data/xn:Type)[1]', 'varchar(50)') 
FROM 
    dbo.YourTable 

基本的には、あなたのルート要素<Something>は、明示的なXML名前空間の一部ではありませんが - しかし<Filters>下の要素のいずれかである - あなたがする必要があるので、それゆえ、 XML要素内のデータを取得するために適切なXML名前空間接頭辞を持つものを修飾します。

+0

これは完全に機能しました。ありがとう! – user1171745