PostgreSQL中多条件的评估流程

3

我已经搜索了一下,但还没有找到这个问题的具体答案。

IF x = TRUE AND y = TRUE THEN 
    -- DO SOMETHING
END IF;

在上述语句中,plpgsql是否会在发现x为FALSE后停止计算y?还是无论x的值如何都会计算y?
我知道这是一个简单的问题,所以可能我没有找到正确的搜索词来得到简单的答案。如果是这样,提前道歉。

1
请查看这里 逻辑函数,并确保跟随链接 4.2.14节 - Adrian Klaver
1个回答

3

关于表达式求值的顺序,不能做出任何假设:

子表达式的求值顺序没有定义。特别地,运算符或函数的输入不一定从左到右或按任何其他固定顺序进行求值。

Postgres智能地在已知结果的情况下停止求值。

如果仅通过求值其中一些部分即可确定表达式的结果,则其他子表达式可能根本不会被求值。

如果必要,可以控制执行顺序。根据上下文,有几种方法可以实现,每种方法都有自己的限制。例如,在查询中可以使用CASE语句。

请阅读:https://www.postgresql.org/docs/current/sql-expressions.html#SYNTAX-EXPRESS-EVAL


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接