提出问题
查询员工姓名,工资,奖金,工资与奖金的和
select ename,sal,comm,sal+comm as `总额` from emp
错误:查询结果中,当 comm 为 null 时,sal+comm 也为 null,这显然不是我们想要的结果
if()
if() 函数类似于java中的三目表达式
语法
if(expr1,expr2,expr3)
解释:如果 expr1表达式 的值为 true ,则返回 expr2 的值,如果 expr1表达式 的值为 false ,则返回 expr3 的值。
例子
select comm,if(comm is null,0,comm) from emp;
上题的正确答案
select ename,sal,if(comm is null,0,comm),sal+if(comm is null,0,comm) from emp
coalesce()
该函数用于 null 值处理
语法
COALESCE(value1,value2……,valuen)
解释:可以传入多个列名,从左到右判断是否为 null,返回第一个非空值;如果所有值都为NULL,那么返回 NULL
例子
select comm,COALESCE(comm,0) from emp;
上题的正确答案:
select ename,sal,COALESCE(comm,0),sal+COALESCE(comm,0) from emp