NULL 值代表遗漏的未知数据。
默认地,表的列可以存放 NULL 值。
NULL值判断使用 IS NULL 和 IS NOT NULL 操作符。
SQL NULL 值
如果表中的某个列NULL值是可选的,那么我们可以在不向该列添加值的情况下插入新记录或更新已有的记录。这意味着该字段将以 NULL 值保存。
NULL 值的处理方式与其他值不同。
NULL 用作未知的或不适用的值的占位符。
注释:无法比较 NULL 和 0或者空字符;它们是不等价的。
NULL 值判断
请看下面的 "articles" 表:
+----+--------------------------+--------+--------+---------------------+
| id | title | author | a_type | pub_date |
+----+--------------------------+--------+--------+---------------------+
| 4 | Javascript | 猿媛 | 20 | 2005-11-03 17:34:12 |
| 5 | ETL快速入门 | 猿媛 | 3 | 2005-11-07 18:40:00 |
| 6 | 异步编程 | 大猿 | 3 | 2005-11-07 18:45:00 |
| 7 | 快速搭建自己的web | 大猿 | NULL | 2021-01-03 00:00:00 |
+----+--------------------------+--------+--------+---------------------+
id = 7的记录a_type值为NULL值
那么我们如何测试 NULL 值呢?
无法使用比较运算符来测试 NULL 值,比如 =、< 或 <>。
我们必须使用 IS NULL 和 IS NOT NULL 操作符。
IS NULL
如果想筛选a_type值为NULL的记录
我们必须使用 IS NULL 操作符:
SELECT *
FROM articles
WHERE a_type is NULL;
结果集如下所示:
+----+--------------------------+--------+--------+---------------------+
| id | title | author | a_type | pub_date |
+----+--------------------------+--------+--------+---------------------+
| 7 | 快速搭建自己的web | 大猿 | NULL | 2021-01-03 00:00:00 |
+----+--------------------------+--------+--------+---------------------+
提示:请始终使用 IS NULL 来查找 NULL 值。
IS NOT NULL
IS NOT NULL 是 IS NULL的取反运算
通过IS NOT NULL 操作符可以选取值不为NULL的记录:
SELECT *
FROM articles
WHERE a_type is not null
结果集如下所示:
+----+-----------------+--------+--------+---------------------+
| id | title | author | a_type | pub_date |
+----+-----------------+--------+--------+---------------------+
| 4 | Javascript | 猿媛 | 20 | 2005-11-03 17:34:12 |
| 5 | ETL快速入门 | 猿媛 | 3 | 2005-11-07 18:40:00 |
| 6 | 异步编程 | 大猿 | 3 | 2005-11-07 18:45:00 |
+----+-----------------+--------+--------+---------------------+
在下一节中,我们了解 ISNULL()、NVL()、IFNULL() 和 COALESCE() 函数。
讨论区