版权声明:本文为博主原创文章,可以随意转载,需注明出处。 https://blog.csdn.net/qq_32371887/article/details/75315025
最近在做项目时遇到一个问题,要对一些条件进行模糊查询,但数据库中保存的是数字,找了一些方法,感觉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 '%完成%'
可见两种方式结果是相同的