gpt4 book ai didi

sql - ESQL COALESCE 函数的 XQuery 等效项是什么?

转载 作者:行者123 更新时间:2023-12-02 08:24:51 24 4
gpt4 key购买 nike

我正在尝试将 WMB 7 映射节点转换为 IIB 9 节点。自动转换过程将一些 ESQL 函数转换为 XQuery 函数。

具体来说,它转ESQL函数

COALESCE (var0, var1) 

(返回第一个非空值,如 if var0 = null then var1 else var0)到

XQUERY (var0,var1)
  1. 转换正确吗?

  2. 如果是,有人可以提供 API 链接吗?我在 XQuery 语法和运算符手册上找不到此内容。

最佳答案

XQuery不是一个API,而是一个标准,完整的语法可以在网上找到:XQuery 1.0XQuery 3.0 (没有2.0)。您还可以找到许多手册、教程等。

XQuery 依赖 XPath ,它的使用范围比 XQuery 更广泛,几乎可以在所有通用语言的库中找到。

您的表达式是正确的 XQuery,因为它将所有内容视为一个序列,并且逗号连接(并展平)两个序列。

XPath 不知道 NULL,但它知道 xsi:nil(),后者是空序列。从结果中删除空序列。

我不确定下面使用的是什么 XQuery 处理器,但正确的表达式应该是 ($var0, $var1)[1]2,其工作原理相同方式作为您的COALESCE操作1。在 XPath 和 XQuery 中,变量通过 $ 符号引用。由逗号分隔的变量或表达式的数量是无限的。如果全部为空序列(null),则结果为空序列。

如果没有[1],它将返回所有非空项并丢弃其余项。您可以使用另一个索引,例如 [3] 来获取第三个非空值。如果不存在这样的值,它将返回 null(空序列)。

<小时/>

1 其行为与您描述的不完全一样。我相信它的行为类似于 if var0 == null then var1 else var0,它选择第一个非空值(我已经更新了OP)。

2 正如 Florent 在评论中所解释的那样,带有此表达式的警告已经到位。如果您有 $var1 := (1, 2)$var2 := (3, 4),则表达式 $var1, $var2)[1 ] 将返回 1,而不是 (1, 2),因为序列不能包含子序列,并且使用 [x] 索引序列> 将返回展平序列的第 xth 值。您可以使用(零或一($var1),零或一($var2))[1]来保护您的表达式。

关于sql - ESQL COALESCE 函数的 XQuery 等效项是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32478559/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com