XQuery:let和for之间的区别

时间:2018-07-21 00:45:59

标签: xml xquery

的输出
<output>{
  let $m := 2
  let $n := "Hello"
  let $s := $m+1
  return (
    <m>{ $m }</m>,
    <n>{ $n }</n>,
    <s>{ $s }</s>
  )
}</output>           

<output>
  <m>2</m>
  <n>Hello</n>
  <s>3</s>
</output>

为什么以下查询的输出相同?

<output>{
  for $m in 2
  for $n in "Hello"
  for $s in $m+1
  return (
    <m>{ $m }</m>,
    <n>{ $n }</n>,
    <s>{ $s }</s>
  )
}</output>

1 个答案:

答案 0 :(得分:4)

如果绑定到for的表达式产生单个结果(例如您的示例),则等同于使用let。如果返回多个项目,则情况将有所不同:

  • 使用for,每个项目将一个一个地绑定到变量。
  • 使用let,所有项目(即完整的序列)将绑定一次。

例如,您将注意到差异。在查询中将2替换为(1,2,3),然后再次运行。