mysql #sql
一、IF() 函数
IF() 是一个简单的条件判断函数,用于根据条件返回不同的值。
语法:
IF(condition, value_if_true, value_if_false)
参数说明:
- condition:条件表达式(返回 TRUE/FALSE)。
- value_if_true:条件为 TRUE 时返回的值。
- value_if_false:条件为 FALSE 时返回的值。
示例:
-- 判断成绩是否及格
SELECT
student_name,
score,
IF(score >= 60, 'Pass', 'Fail') AS result
FROM students;
嵌套 IF 函数(多条件判断):
SELECT
product_name,
stock,
IF(stock > 50, '充足',
IF(stock > 10, '一般', '缺货')
) AS stock_status
FROM products;
二、CASE WHEN 语句
CASE WHEN 是一种更灵活的条件判断语句,适合处理多条件分支。
语法:
CASE
WHEN condition1 THEN result1
WHEN condition2 THEN result2
...
ELSE default_result
END
参数说明:
- condition1, condition2, ...:条件表达式。
- result1, result2, ...:条件为 TRUE 时返回的值。
- default_result:所有条件都不满足时返回的默认值。
示例:
-- 根据成绩划分等级
SELECT
student_name,
score,
CASE
WHEN score >= 90 THEN 'A'
WHEN score >= 80 THEN 'B'
WHEN score >= 70 THEN 'C'
WHEN score >= 60 THEN 'D'
ELSE 'F'
END AS grade
FROM students;
示例:
-- 根据课程类型返回描述
SELECT
course_name,
CASE course_type
WHEN 'math' THEN 'Mathematics'
WHEN 'science' THEN 'Science'
WHEN 'history' THEN 'History'
ELSE 'Other'
END AS course_description
FROM courses;
三、IF() 与 CASE WHEN 的区别
| 特性 | IF() 函数 | CASE WHEN 语句 |
| ----------- | --------------------- | ---------------- |
| 适用场景 | 简单的二选一条件判断 | 多条件分支判断 |
| 语法复杂度 | 简单 | 复杂 |
| 嵌套支持 | 支持嵌套,但可读性差 | 支持多分支,可读性好 |
| 默认值 | 必须指定 value_if_false | 可通过 ELSE 指定默认值 |
| 性能 | 适合简单条件判断,性能较好 | 适合复杂条件判断,性能稍差 |
| | | |
四、使用场景建议
IF() 函数 :
- 适合简单的二选一条件判断。
- 例如:判断是否及格、返回布尔值等。
-
CASE WHEN 语句 :
- 适合多条件分支判断。
- 例如:根据成绩划分等级、根据类型返回描述等。
五、综合示例
-- 使用 IF() 和 CASE WHEN 结合
SELECT
student_name,
score,
IF(score >= 60, 'Pass', 'Fail') AS pass_status,
CASE
WHEN score >= 90 THEN 'A'
WHEN score >= 80 THEN 'B'
WHEN score >= 70 THEN 'C'
WHEN score >= 60 THEN 'D'
ELSE 'F'
END AS grade
FROM students;