三. IFNull(v1,v2) 函数
如果v1 值为空,只是null, 才返回v2, 如果 v1不为空,就返回v1.
三.一 普通展示
select ifnull(1,2),ifnull(0,2),ifnull(null,2);
三.二 业务中使用情况
通常使用的时候,语意类似是这样的, 如果成绩员工考试了,就显示考试成绩,如果没有考试,就显示没有考试。 如果员工的奖金不为空,就显示奖金,如果为空,就显示未发奖金。 这样类似的情况。
这儿用 员工考试成绩做例子吧。 还用刚才的 user 表。
往 user 表里面 添加一列, score, 是double(5,2) 类型的。
alter table user add score double(5,2);
将 ‘两个蝴蝶飞’ 和’精小妹’ 的成绩分别改为 95 和98, 岳泽霖的成绩不动,即不修改。
update user set score=95 where id=1; update user set score=98 where id=3;
展示数据:
select * from user;
发现,岳泽霖的那条记录,展示的成绩为 ‘未考试’。
与 if() 函数一样,也是只判断一次。
四. case() 函数。
case 函数可以判断多次,是对 if(),ifnull() 函数的一种改进。 case() 函数有两种形式。
四.一 case() 函数的两种语句
第一种语句是:
case 条件字段 when 值1 then 执行条件1 [when 值2 then 执行条件2] [else 执行条件n] end
将条件字段放置在最前面了。 末尾可以用 else 执行条件 n,来表示 没有情况符合时,执行这一种情况。
只是针对某一个字段进行比较。
其中,必须一定要写 end, 不能不写。
第二种语句是:
case when 条件字段=值1 then 执行条件1 [when 条件字段=值2 then 执行条件2] [else 执行条件n] end
将条件字段放置在后面,每一次都与值进行判断比较。 其中,else 也表示 没有情况符合时,执行条件n情况。
可以执行不同的条件字段进行比较。
end 也是不能省略。
其实,这两种情况,某种意义上来说,相同的。 根据不同的业务需求采用不同的方式处理。
四.二 case() 函数
如: 如果 sex 为1,展示 男,为2,展示女,否则展示保密。
往user 表里面插入一条 不填写 sex的数据 。
insert into user values(4,'精灵妹',null,null);
case 第一种函数展示:
select name,case sex when 1 then '男' when 2 then '女' else '保密' end as newSex from user;
case 第二种函数展示:
select name,case when sex=1 then '男' when sex=2 then '女' else '保密' end as newSex from user;
谢谢 !!!