WHEN
是 CASE 表达式的一部分,用于指定条件。如果满足条件,则执行相应的操作或返回指定的值。MySQL数据库中的CASE WHEN用法
一、简介
在MySQL中,CASE WHEN语句是一种条件表达式,用于在查询中进行条件判断和逻辑分支控制,它类似于编程语言中的switch语句,可以根据条件的不同执行不同的逻辑,CASE WHEN有两种格式:简单CASE函数和搜索CASE函数,两者都支持可选的ELSE参数。
二、语法结构
简单 CASE 函数
CASE input_expression WHEN when_expression THEN result_expression [...n] [ELSE else_result_expression] END
搜索 CASE 函数
CASE WHEN Boolean_expression THEN result_expression [...n] [ELSE else_result_expression] END
三、示例与解释
1. 简单CASE函数示例
假设有一个学生成绩表students
,包含学生姓名(name)和考试成绩(score),根据成绩给出不同的评价:
SELECT name, score, CASE WHEN score >= 90 THEN '优秀' WHEN score >= 80 THEN '良好' WHEN score >= 60 THEN '及格' ELSE '不及格' END AS evaluation FROM students;
2. 搜索CASE函数示例
假设有一个员工表employees
,包含员工姓名(name)和性别(gender),根据性别返回不同的问候语:
SELECT name, gender, CASE WHEN gender = 'M' THEN 'Hello, Mr. ' + name WHEN gender = 'F' THEN 'Hello, Ms. ' + name ELSE 'Hello, ' + name END AS greeting FROM employees;
3. 使用CASE WHEN进行字符串替换
假设有一个商品类型表goods_types
,包含父ID(parent_id)、类型ID(type_id)和类型名称(type_name),根据parent_id的值替换为新的字符串:
SELECT parent_id, type_id, type_name, CASE parent_id WHEN 0 THEN '00' WHEN 1 THEN '11' ELSE 'OTHERS' END AS parent_id_new FROM goods_types;
4. 嵌套CASE语句
假设有一个用户表users
,包含用户名(name)和出生日期(birthdate),根据用户的月份发送不同的问候语:
SELECT name, birthdate, CASE WHEN MONTH(birthdate) = 1 THEN CASE WHEN DAY(birthdate) <= 15 THEN CONCAT('Happy New Year, ', name, '!') ELSE CONCAT('Happy Birthday, ', name, '!') END WHEN MONTH(birthdate) = 2 THEN CONCAT('Happy Birthday month, ', name, '!') ELSE CONCAT('Hello, ', name, '!') END AS greeting FROM users;
5. CASE WHEN在WHERE子句中的应用
假设有一个用户表users
,包含年龄(age),筛选出年龄在18到25岁之间的用户:
SELECT name, age FROM users WHERE CASE WHEN age > 18 AND age <= 25 THEN '18-25' WHEN age > 25 AND age <= 35 THEN '25-35' ELSE 'other' END = '18-25';
四、注意事项
CASE WHEN语句可以嵌套使用,以实现更复杂的逻辑判断。
CASE WHEN语句可以用于SELECT、WHERE、ORDER BY等子句中。
在使用CASE WHEN语句时,应确保条件的顺序和范围正确,以避免逻辑错误。
小伙伴们,上文介绍了“mysql数据库 when_when”的内容,你了解清楚吗?希望对你有所帮助,任何问题可以给我留言,让我们下期再见吧。
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1309077.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复