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; —— 查询email为空的记录
- 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带来的麻烦。


