NULL是未知值,需用 IS NULL/IS NOT NULL 判断;IFNULL 和 COALESCE 可替换 NULL;插入时避免 NULL 并用 NOT NULL 约束减少问题。

在 mysql 中,NULL 值代表“未知”或“缺失”的数据,不能用普通的比较操作来处理。直接使用等号(=)判断 NULL 会导致错误结果,因为 NULL 不等于任何值,包括它自己。正确处理 NULL 需要使用特定的 运算符 和函数。
1. 判断 NULL 值:IS NULL 和 IS NOT NULL
要检查某个字段是否为 NULL,必须使用 IS NULL 或 IS NOT NULL。
- select * FROM users WHERE email IS NULL; —— 查询 emai l 为空的记录
- SELECT * FROM users WHERE email IS NOT NULL; —— 查询 email 非空的记录
2. 使用 IFNULL()处理 NULL
IFNULL() 函数用于替换查询结果中的 NULL 值,常用于显示默认值。
- SELECT name, IFNULL(phone, ‘ 未填写 ’) FROM users; —— 若 phone 为 NULL,显示“未填写”
3. 使用 COALESCE()返回第一个非空值
COALESCE() 可接收多个参数,返回第一个非 NULL 的值,适合多字段备选场景。
- SELECT COALESCE(mobile, phone, ‘ 无联系方式 ’) FROM contacts; —— 依次取可用联系方式
4. 插入和更新时避免 NULL 陷阱
插入数据时,明确指定值或使用 default 防止意外插入 NULL。
- INSERT INTO users (name, email) VALUES (‘ 张三 ’, NULL); —— 明确设为 NULL
- 定义字段时加 NOT NULL 约束可强制要求非空:email VARCHAR(100) NOT NULL
基本上就这些。关键是记住:NULL 不是值,是一种状态,要用专用方法处理。用好 IS NULL、IFNULL 和 COALESCE,能有效避免查询逻辑出错。同时设计表结构时合理使用 NOT NULL 约束,从源头减少 NULL 带来的麻烦。


