1、使用NVL()将判断操作数是不是null,若是null返回后面的值,若不是null返回该值
select NVL(sal,0) from emp;--若sal是null,返回0;若sal不是null,返回sal2、使用NVL2()判断是不是null
select NVL2(comm,sal+comm,sal) from emp;--若comm是null,返回sal;若comm不是null,返回sal+comm;3、NULLIF(表达式1,表达式2),判断两个表达式是不是相等,相等返回NULL;不相等返回表达式1
select NULL(1,1) from dual;--返回NULL4、DECODE(表达式,值1,输出结果1,值2,输出结果2,...,默认值),若表达式结果为值1输出结果1,若结果为值2,输出结果2,若都不匹配输出默认值
select DECODE(2,1,'结果1',2,'结果2','默认结果') from dual;--输出结果25、CASE..WHEN..THEN.. 表达式
SELECTCASE job WHEN 'CLERK' THEN sal*1.1
WHEN 'SALESMAN' THEN sal*1.5
ELSE sal*1
END
FROM emp;
--若job是CLERK返回工资乘以1.1,若job是SALESMAN返回工资乘以1.5,否则返回工资乘以1
6、coalesce(表达式1,表达式2,....表达式n),若表达式1的值为null,返回表达式2的值,如果表达式2的值为null返回表达式3的值,以此类推,
若所有表达式的值都为null,则返回null,注意所有表达式的类型都应该相同select coalesce(null,1,2) from dual;