NVL功能可以级联吗?

hri*_*shi 2 sql database oracle plsql

可以将nvl()函数级联,...在IBM采访中问过我.....为什么????

cag*_*boy 14

更好的是,使用 COALESCE


OMG*_*ies 8

我的答案:

是的,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天,无论如何)