全部博文(136)
分类: Oracle
2008-11-28 21:16:25
coalesce::=
返回表达式 expr 中第一个非空的 expr
值。如果全部的 expr 都为 NULL,则函数 coalesce 返回 NULL。
它就像更普通的 NVL 函数。比如 NVL(a, b),如果 a 为 NULL,则返回
b。这使用 coalesce(a, b) 也可以实现同样的功能。
有时候,coalesce 函数可以替代 CASE 表达式。比如
coalesce(expr1, expr2) 和下面这个 CASE 表达式是等价的:
CASE WHEN expr1 IS NOT NULL THEN expr1 ELSE expr2 END
类似地,COALESCE (expr1, expr2, ..., exprn
), forn
>=3 和下面这个 CASE 表达式是等价的:
CASE WHEN expr1 IS NOT NULL THEN expr1
ELSE COALESCE (expr2, ..., exprn
) END
举例
SQL> select coalesce(null, null, 'yct', null) from dual; COA --- yct |
SQL> select coalesce(null, null, 'yct', null, 10) from dual; select coalesce(null, null, 'yct', null, 10) from dual * ERROR 位于第 1 行: ORA-00932: 不一致的数据类型: 要求 CHAR 得到的却是 NUMBER |
SQL> select coalesce(null, null, 10, null, 'yct') from dual; select coalesce(null, null, 10, null, 'yct') from dual * ERROR 位于第 1 行: ORA-00932: 不一致的数据类型: 要求 NUMBER 得到的却是 CHAR |