Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用TSQL和XQuery解析XML-获取给定元素值的属性值_Tsql_Xpath_Sql Server 2008 R2_Xquery - Fatal编程技术网

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

使用TSQL和XQuery解析XML-获取给定元素值的属性值,tsql,xpath,sql-server-2008-r2,xquery,Tsql,Xpath,Sql Server 2008 R2,Xquery,我正试图将一个XML文件分解成mssql数据库(SQLServer2008R2)。我希望找到特定元素值的属性值 文件摘录: <company> <names> <name percent="6.55">Company X</name> <name percent="4.99">Company Y</name> <name percent="4.92">Com

我正试图将一个XML文件分解成mssql数据库(SQLServer2008R2)。我希望找到特定元素值的属性值

文件摘录:

<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>

X公司
Y公司
Z公司
所以我在寻找name元素的percent属性的值,其中name元素等于“Company Z”。在这种情况下,它应该返回值“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
declare@xml
设置@xml=N'
X公司
Y公司
Z公司
'
选择
@xml.value('(/company/names[name=“company Z”]/@percent)[1],'decimal(8,5)')作为百分比
这将返回NULL。我尝试了几种途径,但都没有返回我所寻找的。有人能指出我做错了什么吗

非常感谢您的帮助

试试看

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

声明@xml
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
设置@xml=N' X公司 Y公司 Z公司 ' 选择 @xml.value('(/company/names/name[.=“company Z”]/@percent)[1],'decimal(8,5)')作为百分比