mysql 的 case when then 用法 和null 的判断
简单讲解:
SELECT
case -------------如果
when sex='1' then '男' -------------sex='1',则返回值'男'
when sex='2' then '女' -------------sex='2',则返回值'女'
else '其他' -------------其他的返回'其他’
end -------------结束
from user --------整体理解: user表中如果sex='1',则返回值'男'如果sex='2',则返回值'女' 否则返回'其他’
null判断:
表:一个表 aa 有两个字段 id 和 sex ,第1条记录的sex 为空串 (’’) 第二条记录的sex 为空 (null)
- 用法:
第一种: select (case 字段名 when 字段值1 then 结果 when 字段值2 then 结果2 else (默认值) end )
select id ,(case sex when '' then 'bbbbb'
when null then 'aaaaa'
else sex end ) as sex FROM aa;
这个结果是有问题的,理想的结果第二条记录为2 aaaaa ,但是确为空,说明这个判断null 条件有问题,
经过测试:判断null 要用is null
第二种: select (case when 判断条件1 then 结果 when 判断条件2 then 结果2 else (默认值) end )
select id ,(case when sex= '' then 'bbbbb'
when sex is null then 'aaaaa'
else sex end ) as sex FROM aa;
实际项目用到sql:
SELECT
j.id id,
j.work_name '职位名称',
j.com_id '公司id',
j.com_name '公司名称',
c.logo '公司logo',
CASE
WHEN c.logo ='//s11.jiuyeb.cn/static/images/dcom.png' THEN '无'
WHEN c.logo ='https://wmxy-talents.oss-cn-hangzhou.aliyuncs.com/companyLogo/bddc66c1-d7dd-4e9e-9a4a-ae64f94b4a21.pn' THEN '无'
WHEN c.logo is NULL THEN '无'
WHEN c.logo ='' THEN '无'
ELSE '有'
END AS '有无logo',
c.scale'规模',
c.business_name '行业',
c.typeid'企业性质',
j.salary_floor '最低薪资',
j.salay_ceil '最高薪资',
j.person_count '招聘人数',
j.contacts '联系人',
j.tel '电话',
j.phone '手机',
j.remarks '标签',
j.education_id_name '学历要求',
CASE
j.type
WHEN 0 THEN
'就业宝'
WHEN 1 THEN
'人才服务'
WHEN 2 THEN
'hr端'
WHEN 3 THEN
'斗米'
WHEN 4 THEN
'实习僧'
WHEN 5 THEN
'海投网' ELSE NULL
END AS '来源',
IF
( j.jobtype = 1, '全职', '实习' ) '职位类型',
j.create_time '创建时间'
FROM
j_jobinfo j,
j_company c
WHERE
j.com_id = c.id
AND j.`status` = 1
AND j.`enable` = 1
AND j.create_time BETWEEN '2021-01-01 00:00:00' AND '2021-02-24 23:59:59'