NULL 空值判断要点
- NULL 表示缺失,不能用 = 或 != 去判断,结果永远不成立
- 判断为空写 IS NULL,判断非空写 IS NOT NULL
- NULL 参与算术运算结果仍是 NULL,不会报错但值会丢
- WHERE 列 != 'x' 会漏掉该列为 NULL 的行,极易踩坑
- 想同时排除某值且排除空,要写成 列 != 'x' AND 列 IS NOT NULL
- COUNT(列) 不统计 NULL,只有 COUNT(*) 才统计所有行
NULL 空值判断示例
SELECT * FROM user WHERE email IS NULL;
SELECT * FROM user WHERE email IS NOT NULL;
-- 错误示范:下面这行永远拿不到 email 为空的行
SELECT * FROM user WHERE email = NULL;
避坑提醒:凡是『不等于某值』的条件,记得补一句 AND 列 IS NOT NULL,否则空值那部分数据会悄悄从结果里消失。