Oracle COALESCE函数语法为COALESCE(表达式1,表达式2,...,表达式n),n>=2,此表达式的功能为返回第一个不为空的表达式,如果都为空则返回空值。
注意:所有表达式必须为同一类型或者能转换成同一类型。
示例一:在emp表中给comm列为空的人员设为200
- SQL> select a.empno,a.ename,comm,coalesce(comm,200)new_comm from emp a;
- EMPNO ENAME COMM NEW_COMM
- ---------- -------------------- ---------- ----------
- 7369 SMITH 200
- 7499 ALLEN 300 300
- 7521 WARD 500 500
- 7566 JONES 200
- 7654 MARTIN 1400 1400
- 7698 BLAKE 200
- 7782 CLARK 200
- 7788 SCOTT 200
- 7839 KING 200
- 7844 TURNER 0 0
- 7876 ADAMS 200
- EMPNO ENAME COMM NEW_COMM
- ---------- -------------------- ---------- ----------
- 7900 JAMES 200
- 7902 FORD 200
- 7934 MILLER 200
- 8888 xiangyc 888.88 888.88
- 已选择15行。
示例2:模拟返回第一个不为空的值
- SQL> select coalesce(null,3+5,4+6) value from dual;
- VALUE
- ----------
- 8
示例3:模拟数据类型不一致的情况
- SQL> select COALESCE (null,333,444,'555') from dual;
- select COALESCE (null,333,444,'555') from dual
- *
- 第 1 行出现错误:
- ORA-00932: 数据类型不一致: 应为 NUMBER, 但却获得 CHAR