在 MySQL 开发中条件判断和空值处理是非常常见的需求。其中IF和IFNULL是最常用的两个函数。文章目录一、IF 函数详解1. 基本语法2. 基础示例3. 实战示例示例1判断成绩是否及格示例2根据金额分类4. IF 的嵌套使用二、IFNULL 函数详解1. 基本语法2. 基础示例3. 实战示例示例1处理 NULL 值示例2计算时避免 NULL三、IF vs IFNULL 核心区别四、组合使用示例五、常见坑点总结1. NULL 参与计算问题2. IF 不是流程控制语句3. 嵌套过多影响可读性六、扩展CASE WHEN推荐参考一、IF 函数详解1. 基本语法IF(condition,value_if_true,value_if_false)含义如果 condition 为真返回 value_if_true否则返回 value_if_false。2. 基础示例SELECTIF(10,yes,no);结果yes3. 实战示例示例1判断成绩是否及格SELECTname,score,IF(score60,及格,不及格)ASresultFROMstudent;示例2根据金额分类SELECTamount,IF(amount1000,高消费,普通消费)ASlevelFROMorders;4. IF 的嵌套使用SELECTscore,IF(score90,优秀,IF(score60,及格,不及格))ASlevelFROMstudent;说明IF 可以嵌套实现多条件判断。二、IFNULL 函数详解1. 基本语法IFNULL(expr1,expr2)含义如果 expr1 不为 NULL返回 expr1否则返回 expr2。2. 基础示例SELECTIFNULL(NULL,默认值);结果默认值3. 实战示例示例1处理 NULL 值SELECTname,IFNULL(phone,未填写)ASphoneFROMuser;示例2计算时避免 NULLSELECTprice*IFNULL(quantity,0)AStotalFROMorders;说明防止 NULL 参与计算导致结果为 NULL。三、IF vs IFNULL 核心区别对比维度IFIFNULL功能条件判断空值处理参数个数3 个2 个判断方式任意条件是否为 NULL使用场景分支逻辑默认值处理IF 用来“做判断”IFNULL 用来“补空值”。四、组合使用示例在实际开发中经常会组合使用SELECTname,IF(IFNULL(score,0)60,及格,不及格)ASresultFROMstudent;逻辑先用 IFNULL 处理空值再用 IF 判断五、常见坑点总结1. NULL 参与计算问题SELECT1NULL;结果NULL解决SELECT1IFNULL(NULL,0);2. IF 不是流程控制语句注意IF 是函数表达式不是存储过程里的 IF 语句3. 嵌套过多影响可读性建议多条件优先使用 CASE WHEN。六、扩展CASE WHEN推荐SELECTscore,CASEWHENscore90THEN优秀WHENscore60THEN及格ELSE不及格ENDASlevelFROMstudent;优点可读性更强更适合复杂逻辑参考https://dev.mysql.com/doc/refman/8.0/en/flow-control-functions.html#function_ifhttps://dev.mysql.com/doc/refman/8.0/en/flow-control-functions.html#function_ifnull
MySQL IF 和 IFNULL 用法详解
在 MySQL 开发中条件判断和空值处理是非常常见的需求。其中IF和IFNULL是最常用的两个函数。文章目录一、IF 函数详解1. 基本语法2. 基础示例3. 实战示例示例1判断成绩是否及格示例2根据金额分类4. IF 的嵌套使用二、IFNULL 函数详解1. 基本语法2. 基础示例3. 实战示例示例1处理 NULL 值示例2计算时避免 NULL三、IF vs IFNULL 核心区别四、组合使用示例五、常见坑点总结1. NULL 参与计算问题2. IF 不是流程控制语句3. 嵌套过多影响可读性六、扩展CASE WHEN推荐参考一、IF 函数详解1. 基本语法IF(condition,value_if_true,value_if_false)含义如果 condition 为真返回 value_if_true否则返回 value_if_false。2. 基础示例SELECTIF(10,yes,no);结果yes3. 实战示例示例1判断成绩是否及格SELECTname,score,IF(score60,及格,不及格)ASresultFROMstudent;示例2根据金额分类SELECTamount,IF(amount1000,高消费,普通消费)ASlevelFROMorders;4. IF 的嵌套使用SELECTscore,IF(score90,优秀,IF(score60,及格,不及格))ASlevelFROMstudent;说明IF 可以嵌套实现多条件判断。二、IFNULL 函数详解1. 基本语法IFNULL(expr1,expr2)含义如果 expr1 不为 NULL返回 expr1否则返回 expr2。2. 基础示例SELECTIFNULL(NULL,默认值);结果默认值3. 实战示例示例1处理 NULL 值SELECTname,IFNULL(phone,未填写)ASphoneFROMuser;示例2计算时避免 NULLSELECTprice*IFNULL(quantity,0)AStotalFROMorders;说明防止 NULL 参与计算导致结果为 NULL。三、IF vs IFNULL 核心区别对比维度IFIFNULL功能条件判断空值处理参数个数3 个2 个判断方式任意条件是否为 NULL使用场景分支逻辑默认值处理IF 用来“做判断”IFNULL 用来“补空值”。四、组合使用示例在实际开发中经常会组合使用SELECTname,IF(IFNULL(score,0)60,及格,不及格)ASresultFROMstudent;逻辑先用 IFNULL 处理空值再用 IF 判断五、常见坑点总结1. NULL 参与计算问题SELECT1NULL;结果NULL解决SELECT1IFNULL(NULL,0);2. IF 不是流程控制语句注意IF 是函数表达式不是存储过程里的 IF 语句3. 嵌套过多影响可读性建议多条件优先使用 CASE WHEN。六、扩展CASE WHEN推荐SELECTscore,CASEWHENscore90THEN优秀WHENscore60THEN及格ELSE不及格ENDASlevelFROMstudent;优点可读性更强更适合复杂逻辑参考https://dev.mysql.com/doc/refman/8.0/en/flow-control-functions.html#function_ifhttps://dev.mysql.com/doc/refman/8.0/en/flow-control-functions.html#function_ifnull