1.3.4.6 NULL值

MySQLNULL 值像是一个坑,很多新手同学都碰到了类似的问题,当您了解到 NULL的用法,那么也就那么回事,呵呵!从概念上讲,NULL 表示一个未知的值,它与其它的值处理不一样。

如果要比较 NULL 值,在语句中要使用 IS NULL 或 IS NOT NULL

mysql> SELECT 1 IS NULL, 1 IS NOT NULL;
+-----------+---------------+
| 1 IS NULL | 1 IS NOT NULL |
+-----------+---------------+
|         0 |             1 |
+-----------+---------------+
1 row in set (0.00 sec)

不能使用算术比较运算符,如=、<或< >来测试 NULL。为了演示这一点,请尝试下面的查询:

mysql> SELECT 1 = NULL, 1 <> NULL, 1 < NULL, 1 > NULL;
+----------+-----------+----------+----------+
| 1 = NULL | 1 <> NULL | 1 < NULL | 1 > NULL |
+----------+-----------+----------+----------+
|     NULL |      NULL |     NULL |     NULL |
+----------+-----------+----------+----------+
1 row in set (0.00 sec)

因为任何与 NULL 的算术比较的结果也是 NULL,所以不能从这种比较中获得任何有意义的结果。

MySQL 中,0 NULL意味着 false,其他任何东西都意味着 true。布尔运算的默认真值为1。

Note

在 where 字句中,只有比较结果为 true 时,才会被筛选出来。如果比较结果false(包括 0 和 NULL)结果都会被过滤。

GROUP BY 的字句中,所有 NULL 值被视为是想等的。

ORDER BY 的字句中,NULL 会优先显示,如果使用 ORDER BY DESC ,则 NULL 最后显示。

0 和 '' 都是一个具体的值,并非一个未知的 NULL 值。

mysql> SELECT 0 IS NULL, 0 IS NOT NULL, '' IS NULL, '' IS NOT NULL;
+-----------+---------------+------------+----------------+
| 0 IS NULL | 0 IS NOT NULL | '' IS NULL | '' IS NOT NULL |
+-----------+---------------+------------+----------------+
|         0 |             1 |          0 |              1 |
+-----------+---------------+------------+----------------+
1 row in set (0.00 sec)

在后续的章节中,我们还会详细介绍 NULL 值。

results matching ""

    No results matching ""