Hello,大家好!我是程序员阿飞!今天我们主要学习一下SQL中 case when then else end用法。
1、第一种情况
【语法】
CASE 表达式1
WHEN 表达式2 THEN 表达式3
...
WHEN 表达式4 THEN 表达式5
[ELSE 表达式6]
END
【原理】
将表达式1的值与各WHEN字句后面的表达式的值进行比较,如果两者相等,则返回THEN后面的值,然后跳出case语句,
否则返回ELSE子句中的表达式的值。ELSE子句是可选项,当case语句中不包含else子句时,若所有比较都失败,则case语句
将返回NULL。
【例子】从数据表stud_info中,选取stud_id、grade,如果grade为“男”则输出“M”,如果为“女”输出“F”。
SELECT stud_id, sex=CASE gender
WHEN ’男’ THEN ’M’
WHEN ’女’ THEN ’F’
END
FROM stud_info
2、第二种情况
【语法】
CASE WHEN 表达式2 THEN 表达式3
...
WHEN 表达式4 THEN 表达式5
[ELSE 表达式6]
END
【原理】
首先测试WHEN后的条件表达式的值,如果其值为真,则返回THEN后面的表达式的值,否则测试下一个WHEN子句中的表达式的值,
如果所有WHEN子句后的表达式的值都为假,则返回ELSE后的表达式的值,如果在CASE语句中没有ELSE子句,则CASE表达式返回NULL。
【例子】从stud_grade表中查询所有同学考试成绩情况,凡成绩为空者输出“未考”、小于60分输出“不及格”、60分至70分输出“及格”、
70分至90分输出“良好”、大于或等于90分时输出“优秀”。
SELECT
stud_id,
NAME,
score = CASE
WHEN grade IS NULL THEN
’未考’
WHEN grade < 60 THEN
’不及格’
WHEN grade >= 60
AND grade < 70 THEN
’及格’
WHEN grade >= 70
AND grade < 90 THEN
’良好’
WHEN grade >= 90 THEN
’优秀’
END
FROM
stud_grade
【PS】