【问题标题】:How to return value from general comparisons in XQuery?如何从 XQuery 中的一般比较中返回值?
【发布时间】:2014-11-11 23:09:19
【问题描述】:

我目前有这个查询,但它只返回一个布尔值 TRUE。

let $expression1 := (0, 11, 22, 34, 36, 57)
let $expression2 := (16, 17, 57, 18)

for $item in ($sequence1 = $sequence2)
return $item

此查询当前返回布尔值 TRUE。 我如何能够返回两个值的序列:第一个表达式的值和第二个表达式的值?

任何帮助将不胜感激。 谢谢。

【问题讨论】:

  • 变量 $sequence1 和 $sequence2 没有定义。听起来您正在期待一个嵌套序列((0,11,22,34,36,57),(16,17,57,18))。 XQuery 将嵌套序列扁平化为普通序列,因此没有嵌套序列的概念。您需要将 XML 用于 XQuery 中的嵌套数据结构。如果这是您所期望的,我可以给出答案。

标签: xquery


【解决方案1】:

您得到一个布尔结果,因为 ($sequence1 = $sequence2) 的计算结果为“$sequence1 中的任何值是否等于 $sequence2 中的任何值?”。计算结果为 for $item in true() return $item,它返回单个布尔值。

如果您只想返回两个序列中的值:

return $sequence1[. = $sequence2]

如果你想同时返回两个序列:

return ($sequence1, $sequence2)

如果你想返回没有重复的两个序列:

return distinct-values(($sequence1, $sequence2))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-14
    相关资源
    最近更新 更多