获取第一个元素的属性值?

时间:2017-09-07 23:14:13

标签: sql-server xml xpath xquery

以下代码尝试获取SQL Server中第一个节点a的属性y

declare @x xml = '<x><y a="1" /><y a="2" /></x>'

select @x.query('/x/y[1]/@a')

select @x.query('(/x/y/@a)[1]')

然而,它出现了错误

  

Msg 6307,Level 16,State 1,Line 5

     

XML格式检查:属性不能出现在元素声明之外。重写你的XQuery,使其返回格式良好的XML。

2 个答案:

答案 0 :(得分:2)

如果我理解

示例

declare @x xml = '<x><y a="1" /><y a="2" /></x>'
select @x.value('x[1]/y[1]/@a','varchar(max)')

<强>返回

1

答案 1 :(得分:0)

这有效

select @x.query('data(/x/y[1]/@a)')