3.3.4.6 如何使用NULL值

3.3.4.6 Working with NULL Values

初学时NULL可能会令人惊讶,但习惯了就好了~~。在概念上,NULL表示“缺少的未知值”,MySQL对它与其他值有不同的处理方式。

为了测试值是否为NULL,请使用IS NULL 和 IS 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中,0或NULL意味着false,其它值意味着true。在boolean操作中,true的默认值是1.

这也是为什么前面的章节中,我们使用death IS NOT NULL来验证动物是否已经死亡,而不是death <> NULL。

在GROUP BY中,两个NULL值认为是相等的。

当使用ORDER BY … ASC时,NULL值会排在前面,使用ORDER BY … DESC时,NULL值会排在后面。

一个常见的关于NULL的错误是认为一个定义了NOT NULL的列不能插入0或空字符串,但是实际情况并非如此。0和空字符串都是实际值,而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列插入0或空字符串是完全可以的,因为它们是 NOT NULL。更多信息参见“Problems with NULL Values

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值