mysql 的 case when then end用法 ,null 的判断,复杂SQL实际应用

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)

在这里插入图片描述

  1. 用法:

第一种: 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'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值