最近在做项目时遇到一个问题,要对一些条件进行模糊查询,但数据库中保存的是数字,找了一些方法,感觉CASE WHEN比较好用。
格式:
CASE WHEN 字段=条件 THEN 结果
ELSE 其它 END
select rec.status rec_status,re_statue.sta from (select id, (CASE WHEN status = 0 THEN '未领取 ' WHEN status = 1 THEN '招聘中 ' WHEN status = 2 THEN '招聘名额未满' WHEN status = 3 THEN '完成招聘' ELSE '其它' END) as sta from recruitment ) as re_statue, recruitment rec where rec.id = re_statue.id and re_statue.sta like '%未%'
其中WHEN后面为条件,THEN后面为当数据为此时的结果。ELSE是超出以上条件的默认值。
另一种写法
select rec.status rec_status,re_statue.sta from (select id, (CASE status WHEN 0 THEN '未领取 ' WHEN 1 THEN '招聘中 ' WHEN 2 THEN '招聘名额未满' WHEN 3 THEN '完成招聘' ELSE '其它' END) as sta from recruitment) as re_statue, recruitment rec where rec.id = re_statue.id and re_statue.sta like '%完成%'
可见两种方式结果是相同的