使用NULL值

在你习惯之前,NULL值可能会令人惊讶,从概念上讲,NULL表示“缺失的未知值”,并且与其他值的处理方式略有不同。

要测试NULL,请使用IS NULLIS NOT NULL运算符,如下所示:

mysql> SELECT 1 IS NULL, 1 IS NOT NULL;
+-----------+---------------+
| 1 IS NULL | 1 IS NOT NULL |
+-----------+---------------+
|         0 |             1 |
+-----------+---------------+

你不能使用算术比较运算符(如=<<>)来测试NULL,要自己演示,请尝试以下查询:

mysql> SELECT 1 = NULL, 1 <> NULL, 1 < NULL, 1 > NULL;
+----------+-----------+----------+----------+
| 1 = NULL | 1 <> NULL | 1 < NULL | 1 > NULL |
+----------+-----------+----------+----------+
|     NULL |      NULL |     NULL |     NULL |
+----------+-----------+----------+----------+

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

在MySQL中,0NULL表示false,其他任何表示都是true,布尔运算的默认真值为1

GROUP BY中,两个NULL值被视为相等。

在执行ORDER BY时,如果你执行ORDER BY ... ASC,则首先显示NULL值,如果执行ORDER BY ... DESC,则为最后一个值。

使用NULL时常见的错误是假设无法将零或空字符串插入定义为NOT NULL的列中,但事实并非如此,这些实际上是值,而NULL表示“没有值”,你可以使用IS [NOT] 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 |
+-----------+---------------+------------+----------------+

因此,完全可以将零或空字符串插入NOT NULL列,因为它们实际上是NOT NULL


上一篇:日期计算

博弈
2.5k 声望1.5k 粉丝

态度决定一切