MySQL基础之 逻辑运算符

mysql的逻辑运算符有四个:与、或、非、异或

我们平时在谈论的时候不考虑带有NULL的情况,今天我们就来考虑一下带有NULL值,他们的结果是怎么样的

AND(&&)运算符

mysql> select 5 AND 6,0 AND 7,0 AND NULL,3 AND NULL,9 AND 2,0 AND 12,0 AND NULL,14 AND NULL;
+---------+---------+------------+------------+---------+----------+------------+-------------+
| 5 AND 6 | 0 AND 7 | 0 AND NULL | 3 AND NULL | 9 AND 2 | 0 AND 12 | 0 AND NULL | 14 AND NULL |
+---------+---------+------------+------------+---------+----------+------------+-------------+
|       1 |       0 |          0 |       NULL |       1 |        0 |          0 |        NULL |
+---------+---------+------------+------------+---------+----------+------------+-------------+
1 row in set (0.00 sec)

OR(||)运算符

mysql> select 5 OR 6,0 OR 7,0 OR 0,3 OR NULL,9 || 2,0 || 12,0 || NULL,14 || NULL;
+--------+--------+--------+-----------+--------+---------+-----------+------------+
| 5 OR 6 | 0 OR 7 | 0 OR 0 | 3 OR NULL | 9 || 2 | 0 || 12 | 0 || NULL | 14 || NULL |
+--------+--------+--------+-----------+--------+---------+-----------+------------+
|      1 |      1 |      0 |         1 |      1 |       1 |      NULL |          1 |
+--------+--------+--------+-----------+--------+---------+-----------+------------+
1 row in set (0.01 sec)

NOT( ! )运算符

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

总结:通过上面的分析我发现:NULL值是处于0和1之间的某个值,他也表示一个值,只不过这个值是NULL值,而不是0。在进行计算的时候,1与NULL则结果为NULL。而0与NULL则结果为0。1或NULL则结果为1,0或NULL则结果为NULL;可见NULL值是介于0和1之间的值。另外非NULL既不是1也不是0,还是NULL。

原文地址:https://www.cnblogs.com/FengGeBlog/p/9930167.html