MySQL™ 参考手册(使用NULL值)

使用NULL值

在你习惯以前,NULL值可能会使人惊讶,从概念上讲,NULL表示“缺失的未知值”,而且与其余值的处理方式略有不一样。mysql

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

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

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

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,布尔运算的默认真值为1code

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

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

使用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 NULLco


上一篇:日期计算

相关文章
相关标签/搜索