返回
MySQL之case...when...then...end的详细使用,保姆级教程
后端
2023-09-15 14:25:42
掌握MySQL中的case...when...then...end语句,成为SQL高手
初识case...when...then...end
case...when...then...end语句是MySQL中用于根据不同条件返回不同结果的强大语句。其语法如下:
CASE
WHEN 条件1 THEN 结果1
WHEN 条件2 THEN 结果2
...
ELSE 结果N
END
简单case函数
简单case函数根据字段名称的值返回结果。语法如下:
CASE 字段名称
WHEN 值1 THEN 结果1
WHEN 值2 THEN 结果2
...
ELSE 结果N
END
例如,根据学生的成绩评定等级:
SELECT
CASE 成绩
WHEN 90~100 THEN 'A'
WHEN 80~89 THEN 'B'
WHEN 70~79 THEN 'C'
WHEN 60~69 THEN 'D'
ELSE 'F'
END AS 等级
FROM 学生成绩表;
case搜索函数
case搜索函数根据字段名称的值是否匹配指定的模式返回结果。语法如下:
CASE
WHEN 字段名称 LIKE '模式' THEN 结果1
WHEN 字段名称 LIKE '模式' THEN 结果2
...
ELSE 结果N
END
例如,根据商品名称查询价格:
SELECT
CASE 商品名称
WHEN '%手机%' THEN '999元'
WHEN '%电脑%' THEN '4999元'
WHEN '%电视机%' THEN '2999元'
ELSE '价格不详'
END AS 价格
FROM 商品表;
case...when...then...end的应用
case...when...then...end语句可应用于各种场景:
- 查询:根据条件查询数据。
- 更新:根据条件更新数据。
- 删除:根据条件删除数据。
例如,根据成绩更新学生等级:
UPDATE 学生成绩表
SET 等级 = CASE 成绩
WHEN 90~100 THEN 'A'
WHEN 80~89 THEN 'B'
WHEN 70~79 THEN 'C'
WHEN 60~69 THEN 'D'
ELSE 'F'
END;
case...when...then...end的优势
- 提高代码可读性: 将复杂的条件拆分为多个清晰的case语句,增强代码可读性。
- 简化代码: 消除冗长的if-else语句,简化代码结构。
- 提升性能: MySQL优化器可以更有效地处理case语句,提高查询性能。
常见问题解答
1. case语句中可以使用哪些数据类型?
可以是任何MySQL支持的数据类型,包括字符串、数字、日期和时间。
2. case语句可以嵌套吗?
是的,可以嵌套case语句来处理更复杂的条件。
3. case语句的ELSE子句是否必填?
否,ELSE子句不是必需的,但如果没有,则将返回NULL值。
4. case语句可以返回多个值吗?
否,case语句每次只能返回一个值。
5. 如何使用case语句更新多个字段?
可以使用多个CASE表达式,每个CASE表达式负责更新一个字段。