2014-04-16 50 views
2

我試圖將XML文件分解爲mssql數據庫(SQL Server 2008 R2)。我正在尋找一個特定元素值的屬性值。使用TSQL和XQuery解析XML - 獲取給定元素值的屬性值

文件的摘錄:

<company> 
    <names> 
     <name percent="6.55">Company X</name> 
     <name percent="4.99">Company Y</name> 
     <name percent="4.92">Company Z</name> 
    </names> 
</company> 

所以我在尋找其中名稱元素等於「公司Z」 name元素的百分比屬性的值。在這種情況下應該返回值「4.92」。

到目前爲止我已經想出了下面的代碼:

declare @xml xml 

set @xml = N' 
<company> 
    <names> 
     <name percent="6.55">Company X</name> 
     <name percent="4.99">Company Y</name> 
     <name percent="4.92">Company Z</name> 
    </names> 
</company>' 

select 
    @xml.value('(/company/names[name = "Company Z"]/@percent)[1]', 'decimal(8,5)') as Percentage 

這將返回NULL。我嘗試了幾條路徑,但沒有一條返回正在查找的內容。有人能指出我做錯了什麼嗎?

任何幫助非常感謝!

回答

0
declare @xml xml 

set @xml = N' 
<company> 
    <names> 
     <name percent="6.55">Company X</name> 
     <name percent="4.99">Company Y</name> 
     <name percent="4.92">Company Z</name> 
    </names> 
</company>' 

select 
    @xml.value('(/company/names/name[. = "Company Z"]/@percent)[1]', 'decimal(8,5)') as Percentage 
0

嘗試

data(/company/names/name[.='Company Z']/@percent) 

爲您的XPath