MySQL中有关NULL的计算

mysql> select NULL=NULL; #判断两个NULL是否相等,结果不是1也不是0
+-----------+
| NULL=NULL |
+-----------+
|      NULL |
+-----------+
1 row in set (0.00 sec)

mysql> select NULL<>NULL,NULL!=NULL; #判断两个NULL是否不相等,结果不是1也不是0
+------------+------------+
| NULL<>NULL | NULL!=NULL |
+------------+------------+
|       NULL |       NULL |
+------------+------------+
1 row in set (0.00 sec)

mysql> select NULL<=>NULL; #判断两个NULL是否相等
+-------------+
| NULL<=>NULL |
+-------------+
|           1 |
+-------------+
1 row in set (0.00 sec)

mysql> select NULL is NULL; #判断两个NULL是否相等
+--------------+
| NULL is NULL |
+--------------+
|            1 |
+--------------+
1 row in set (0.00 sec)

mysql> select NULL is NOT NULL; #判断两个NULL是否不相等
+------------------+
| NULL is NOT NULL |
+------------------+
|                0 |
+------------------+

mysql> select not NULL; #对NULL取非
+----------+
| not NULL |
+----------+
|     NULL |
+----------+
1 row in set (0.00 sec)

mysql> select 1 and NULL, NULL and NULL;
+------------+---------------+
| 1 and NULL | NULL and NULL |
+------------+---------------+
|       NULL |          NULL |
+------------+---------------+
1 row in set (0.00 sec)

mysql> select 1 or NULL, NULL or NULL,0 or NULL;
+-----------+--------------+-----------+
| 1 or NULL | NULL or NULL | 0 or NULL |
+-----------+--------------+-----------+
|         1 |         NULL |      NULL |
+-----------+--------------+-----------+
1 row in set (0.00 sec)

  总结:

  尽量使用 <=>、is null 、is not null 对NULL进行判断,否则得到的结果都是NULL;

  NULL进行与和非运算时,结果都是null,然后NULL和一个值为true的值取或,结果为1,否则结果都为NULL;

  上面的总结比较混乱,因为NULL可以理解为一个变量的值是未知的,他可能为true,可能为false(相对于bool值),那么在进行运算时,就要考虑两种情况,其中一种情况为false时,总的结果就是NULL。

posted @ 2018-03-13 10:31  寻觅beyond  阅读(685)  评论(0编辑  收藏  举报
返回顶部