OrientDB COALESCE功能意外结果

时间:2015-11-30 18:49:24

标签: orientdb coalesce

使用OrientDB 2.1.2,我试图使用固有的COALESCE功能并遇到一些奇怪的结果。

目标:根据特定条件选择属性的最大值,如果在给定条件的情况下该属性没有值,则选择0。

这是我尝试用来制作结果的内容。

尝试1:只根据某些条件选择属性的最大值 - 这就像我预期的那样......单个结果 enter image description here

尝试2:与以前相同的查询但现在我添加了一个额外的条件,我知道这将导致没有返回结果 - 这也像我预期的那样工作...没有找到结果 enter image description here

尝试3:如果第二个查询的结果没有返回结果,则使用COALESCE选择0 - 这是查询失败的地方(见下文)。 enter image description here

我希望第二个查询的结果不返回任何结果,从而有资格作为" NULL"结果意味着COALESCE函数应该继续返回0.相反,COALESCE函数看到内部选择的结果(再次,不返回结果)作为有效的非空值,导致COALESCE函数永远不会返回预期的" 0"值。

熟悉使用OrientDB API的人有两个问题:

  1. 您认为此功能是否正常运行,或者是否应该向orientdb问题跟踪器提交问题?
  2. 是否有另一种方法可以在不使用COALESCE或以不同方式使用COALESCE的情况下实现我的目标?

1 个答案:

答案 0 :(得分:1)

请尝试:

select coalesce($a, 0) from ... let $a = (subquery) where ...

或者也就是这个变体因为子选择返回结果集,但是合并需要一个值:

select coalesce($a[0], 0) from ... let $a = (subquery) where ...