我的答案:
是的,NVL可以级联.这是我期望在从Oracle版本到8i包含的代码中看到的东西,因为在Oracle 9i之前不支持COALESCE.
COALESCE是ANSI SQL 99标准,其作用类似于CASE/SWITCH语句,它如何按顺序计算每个表达式,并且一旦达到非空表达式,就不会继续计算表达式.这称为短路.使用COALESCE的另一个好处是数据类型不需要匹配,这在使用NVL时是必需的.
这个:
SELECT COALESCE( 1.5 / NULL,
SUM(NULL),
TO_CHAR(SYSDATE, 'YYYY') ) abc
FROM DUAL
Run Code Online (Sandbox Code Playgroud)
...将返回:( 2009对于接下来的~32天,无论如何)