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

Sql server 获取第一个元素的属性值?,sql-server,xml,xpath,xquery,Sql Server,Xml,Xpath,Xquery,下面的代码尝试获取SQL Server中第一个节点y的属性a 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]') declare@xxml='' 选择@x.query('/x/y[1]/@a') 选择@x.query(“(/x/y/@a

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

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]')
declare@xxml=''
选择@x.query('/x/y[1]/@a')
选择@x.query(“(/x/y/@a)[1]”)
然而,它得到的错误是

味精6307,16级,状态1,第5行

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

如果我能理解

示例

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

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