我试图将XML文件粉碎成mssql数据库(SQL Server 2008 R2)。我正在寻找特定元素值的属性值。
文件的摘录:
<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>
所以我正在寻找名称元素的百分比属性的值,其中name元素等于&#34;公司Z&#34;。在这种情况下,应该返回值&#34; 4.92&#34;。
到目前为止,我已经提出了以下代码:
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 :(得分:0)
试
data(/company/names/name[.='Company Z']/@percent)
作为你的xpath
答案 1 :(得分: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