Xquery中[1]的意义是什么?

Deb*_*Deb 3 t-sql sql-server xquery sql-server-2005 xquery-sql

我是SQL Server中xquery的新手.

我经常遇到使用[1]和属性的xquery表达式.

有人可以解释一下这是什么意思吗?

这是一个例子

declare @aa xml
set @aa='<data>
  <row>
    <Value>1</Value>
    <Text>Masters</Text>
  </row>
  <row>
    <Value>2</Value>
    <Text>Transactions</Text>
  </row>
  <row>
    <Value>3</Value>
    <Text>Misch. Reports</Text>
  </row>
</data>'


select a.f.value('Value[1]','varchar(50)'),   --  why [1] here ?
   a.f.value('Text[1]','varchar(50)')         --  and here too..
 from @aa.nodes('/data/row') as a(f)
Run Code Online (Sandbox Code Playgroud)

谢谢你的问候

Rem*_*anu 8

在XPath中,[expression]语法表示位置路径上的谓词.[1]缩写语法[position()=1],这意味着"第一元件".在SQL Server中使用XPath [1](或确定性地过滤到最多一个元素的任何其他谓词)是必需的,因为它将XPath表达式从一个返回任意数量的元素的表达式转换为确定性地返回0或1个元素的元素,从而转换为标量表达式,这.value()需要:

XQuery必须至多返回一个值.