我正在尝试将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元素等于“ Company Z”的name元素的percent属性值。在这种情况下,哪个应返回值“ 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。我尝试了几种方法,但是没有一条返回我想要的东西。有人可以指出我做错了吗?
任何帮助深表感谢!
最佳答案
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
关于tsql - 使用TSQL和XQuery解析XML-获取给定元素值的属性值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23107225/