NULLIF函数用于比较两个表达式,若相等则返回NULL,否则返回第一个表达式的值。常用于防止除以零、处理空字符串及数据标准化。例如:SELECT 10 / NULLIF(0, 0); 返回NULL;SELECT NULLIF(column_name, '') 可将空字符串转为NULL;结合COALESCE可实现灵活替换,如SELECT COALESCE(NULLIF(user_input, ''), '未知')。该函数等价于CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END,使用时需注意参数类型匹配,NULLIF(NULL, NULL)返回NULL。

在 MySQL 中,NULLIF 是一个非常实用的函数,用于比较两个表达式。如果它们相等,函数返回 NULL;如果不相等,则返回第一个表达式的值。这个函数常用于避免除以零、清理数据或处理默认值等问题。
NULLIF 函数语法
NULLIF(expr1, expr2)说明:
- expr1 和 expr2 是要比较的两个表达式。
- 如果 expr1 = expr2,返回 NULL。
- 否则返回 expr1 的值。
常见使用场景与示例
1. 防止除以零错误
在计算中,如果分母可能为 0,直接除法会出错或返回异常结果。可以用 NULLIF 将分母为 0 的情况转为 NULL,从而避免问题。
SELECT 10 / NULLIF(0, 0); -- 返回 NULL(因为 0=0,NULLIF 返回 NULL,所以整个表达式为 NULL)SELECT 10 / NULLIF(2, 0); -- 返回 5(因为 2≠0,NULLIF 返回 2)
实际应用中,比如计算“平均单价”:
SELECT total_price / NULLIF(quantity, 0) AS unit_price FROM orders;当 quantity 为 0 时,结果为 NULL,而不是报错。
2. 处理空字符串或默认值
动态WEB网站中的PHP和MySQL详细反映实际程序的需求,仔细地探讨外部数据的验证(例如信用卡卡号的格式)、用户登录以及如何使用模板建立网页的标准外观。动态WEB网站中的PHP和MySQL的内容不仅仅是这些。书中还提到如何串联JavaScript与PHP让用户操作时更快、更方便。还有正确处理用户输入错误的方法,让网站看起来更专业。另外还引入大量来自PEAR外挂函数库的强大功能,对常用的、强大的包
有时字段中存储了空字符串 '',但你想把它当作 NULL 来处理,可以这样写:
SELECT NULLIF(column_name, '') FROM table_name;如果 column_name 的值是空字符串,返回 NULL;否则返回原值。这在数据清洗中很有用。
3. 与 COALESCE 结合使用
NULLIF 常和 COALESCE 搭配,实现更灵活的数据替换逻辑。
SELECT COALESCE(NULLIF(user_input, ''), '未知') FROM user_table;含义:如果 user_input 是空字符串,先转为 NULL,再由 COALESCE 替换为 '未知'。
注意事项
- NULLIF 是 CASE 表达式的简写形式,等价于:
CASE WHEN expr1 = expr2 THEN NULL ELSE expr1 END - 类型匹配很重要:MySQL 会尝试隐式转换,但建议保持两个参数类型一致,避免意外结果。
- NULL 与任何值比较都返回 UNKNOWN,所以 NULLIF(NULL, NULL) 实际上返回 NULL(符合预期)。
基本上就这些。NULLIF 虽小,但在数据处理中很实用,尤其适合做安全计算和数据标准化。用好它能让 SQL 更简洁、更健壮。









