2012-01-26 189 views
2

我想選擇Type值,其中下面的xml位於SQL Server 2005數據庫的表的xml類型列中。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