tsql - 使用TSQL和XQuery解析XML-获取给定元素值的属性值

标签 tsql xpath sql-server-2008-r2 xquery

我正在尝试将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/

相关文章:

sql - 按两列的最小值排序

sql - 如果主键不是 NULL,那么引用它的外键是否也应该指定为 NOT NULL?

css - 将 selenium CSS 选择器用于多项操作

python - 为什么我从网络抓取中得到空列表?

sql-server - SQL 服务器 2008 R2 : selecting record which are present in another table

c# - SQL Server 2008 选择在

sql - 如何获取两个日期之间耗时,忽略某些时间范围?

sqlite - 如何在sqlite中使用if语句

html - 如何在scrapy中为HTML文件编写XPath?

sql-server-2008-r2 - SQL Server 2008 R2 标准在 SSMS 中缺少 "Audits"文件夹?