空值判断
is null: 判断为空- 注意:
null与''是不同的
- 注意:
is not null: 判断不为空- 注意:不是
not is null
- 注意:不是
为什么要用 IS NULL
NULL 表示“缺失/未知”,它不是一个普通值,因此不能用 = NULL 或 != NULL 来比较,必须使用 IS NULL / IS NOT NULL。
-- 查询身高为空的信息
SELECT * FROM students WHERE height IS NULL;
-- 判断非空
SELECT * FROM students WHERE height IS NOT NULL;
-- SELECT * FROM students WHERE height NOT IS NULL; 错误使用
NULL 与空字符串的区别
NULL:缺失/未知'':长度为 0 的字符串,是一个具体值
与外连接的关系
外连接(LEFT/RIGHT JOIN)常会产生 NULL(未匹配到的那一侧列为 NULL),因此外连接结果的过滤经常需要配合 IS NULL(见 外连接查询)。