1.
SELECT s.s_id, s.s_name, s.s_sex, CASE WHEN s.s_sex = ‘1‘ (要筛选的字符)THEN ‘男‘ (要改成的字符) WHEN s.s_sex = ‘2‘ (要筛选的字符)THEN ‘女‘(要改成的字符) ELSE ‘其他‘(要改成的字符) ###如果匹配到s.s_sex这一列 有等于1的,改为男。等于2改为女。
END as sex,
s.s_age,
s.class_id
FROM
t_b_student s
WHERE
......
2.
SELECT s.s_id, s.s_name, s.s_sex, CASE s.s_sex WHEN ‘1‘ THEN ‘男‘ WHEN ‘2‘ THEN ‘女‘ ELSE ‘其他‘ ###在s.s_sex 表,如果=1,改为男,=2,改为女 END as sex, s.s_age, s.class_id FROM t_b_student s WHERE .............
s_id | s_name | s_sex | sex | s_age | class_id |
1 | 张 | 1 | 男 | 12 | 100 |
2 | 李 | 2 | 女 | 15 | 100 |
3 | 王 | 3 | 其他 | 6 | 100 |
Case具有两种格式:简单Case函数和Case搜索函数。
简单Case函数:
CASE sex
WHEN‘1’THEN‘男’
WHEN‘0’THEN‘女’
ELSE‘其他’END
Case搜索函数:
CASE WHEN sex=‘1’THEN‘男’
WHEN sex=‘0’THEN‘女’
ELSE‘其他’END
显然,简单Case函数生在简洁,但是它只适用于这种单字段的单值比较,而Case搜索函数的优点在于适用于所有比较的情况。
还有一个需要注意的问题,Case函数在满足了某个符合条件后,剩下的条件将会被自动忽略,因此,即使满足多个条件,执行过程中也只认第一个条件。
在使用CASE WHEN时,可以把它当作一个没有字段名的字段,字段值根据条件确认,在需要使用字段名时可以是用as来定义别名。