NULL 到底是什么要点
- NULL 表示缺失或未知,不等于空串也不等于数字 0
- 判断是否为 NULL 只能写 IS NULL,写 = NULL 永远返回空结果
- 反过来排除 NULL 写 IS NOT NULL,不能用 != NULL
- NULL 与任何值比较(含另一个 NULL)结果仍是 NULL
- 设计表时能用默认值就别留 NULL,查询和统计都省心
- WHERE 里误用 = NULL 会让整条查询返回空集,极隐蔽
NULL 到底是什么示例
-- staff 表:name / salary / bonus
SELECT * FROM staff WHERE bonus IS NULL;
SELECT * FROM staff WHERE bonus IS NOT NULL;
-- 错误示范:下面两条永远查不到任何行
SELECT * FROM staff WHERE bonus = NULL;
SELECT * FROM staff WHERE bonus != NULL;
NULL 到底是什么对照
| 写法 | 含义 | 能否命中 NULL 行 |
|---|---|---|
| col IS NULL | 列值为空 | 能 |
| col IS NOT NULL | 列值不为空 | 能 |
| col = NULL | 未知比较 | 不能 |
| col != NULL | 未知比较 | 不能 |
避坑提醒:记住一句口诀:NULL 只能「IS」,不能「=」。任何用等号比 NULL 的 SQL 都先怀疑它。