【笔记】MySQL替换语句

前言

当查询出来的数据,想通过一定的计算方式,转换成其他文本展示时,可以使用替换语句

替换语句只在展示时做替换,不会实际修改表中的数据,所以通常配合查询语句做筛选查询

语法

  • 使用CASE…THEN…ELSE…END语句作为查询的目标

  • WHEN…THEN语句可以有一组或多组

  • CASE语句通常配合AS语句重命名为有意义的表头

    • AS语句只是为了重命名表头(为了让表格展现时更美观),并不是CASE语句的必要关键字
1
2
3
4
5
6
7
8
9
10
11
SELECT
CASE
WHEN 判断语句1
THEN 当前判断1成立时,数据转化为的显示文本
WHEN ...
THEN ...
ELSE
以上判断均不成立时,数据转化为的显示文本
END
AS 重命名表头
FROM 表名
  • 由于MySQL并不是严格要求缩进的语言,所以以上语法的换行只是为了方便理解,实际操作中只需要空格隔开每个关键字即可

<filter>:判断语句
<str_new>:当前判断语句成立时,处理后的文本
<str_other>:当所有判断语句都不成立时,处理后的文本
<name_table>:表名

1
SELECT CASE WHEN <filter> THEN <str_new> ELSE <str_other> END FROM <name_table>

案例

  • 有一批学生成绩的数据,表名xscj,包含学生姓名、学生成绩字段。现需要将学生成绩字段进行计算,0-60分展示为不及格,60-100展示为及格,其他分数展示为无效成绩,并将表头中的学生成绩展示为学生成绩等级
1
2
3
4
5
6
7
8
9
10
11
SELECT 学生姓名,
CASE
WHEN 学生成绩>=0 AND 学生成绩<60
THEN "不及格"
WHEN 学生成绩>=60 AND 学生成绩<=100
THEN "及格"
ELSE
"成绩无效"
END
AS "学生成绩等级"
FROM xscj

完成

参考文献

博客园——笑花大王