if函数用于条件判断,语法为IF(expr, true_val, false_val);若expr为真返回true_val,否则返回false_val;可用于select中动态生成值,如成绩及格判断;可处理NULL值,替代IFNULL功能;支持嵌套实现多条件分级,如成绩等级划分;相比CASE更简洁,但复杂场景建议用CASE。

mysql中的IF函数是一个条件判断函数,用法类似于编程语言中的三元运算符。它根据表达式的真假返回不同的值,语法如下:
IF(expr, true_val, false_val)
含义是:如果 expr 为真(即不等于0且不为NULL),返回 true_val;否则返回 false_val。
基本语法说明
参数解释:
- expr:要判断的条件表达式
- true_val:条件成立时返回的值
- false_val:条件不成立时返回的值
例如:
SELECT IF(1 > 0, ‘正确’, ‘错误’); — 返回 ‘正确’
在查询中使用IF函数
可以在SELECT语句中使用IF来动态生成字段值。
SELECT name, score, IF(score >= 60, ‘及格’, ‘不及格’) AS result FROM students;
这条语句会根据score字段判断每个学生的成绩是否及格,并生成一个名为result的新列。
处理NULL值的场景
IF函数也可以用来替代IFNULL的功能,虽然通常建议用IFNULL处理NULL,但IF也能实现类似效果。
SELECT IF(name IS NULL, ‘未知’, name) AS name_display FROM users;
当name为NULL时,显示“未知”,否则显示实际姓名。
嵌套IF函数
可以嵌套使用IF实现多条件判断(类似多重if-else)。
SELECT score, IF(score >= 85, ‘优秀’, IF(score >= 70, ‘良好’, IF(score >= 60, ‘及格’, ‘不及格’) ) ) AS level FROM students;
这段代码实现了成绩等级的多级划分。
基本上就这些。IF函数简单实用,适合在查询中做快速条件判断,写起来比CASE WHEN更简洁,但在复杂条件时还是推荐用CASE。注意别和存储过程中的IF语句混淆,这里是作为函数在SELECT中使用的。