首页 > 编程笔记 > Web笔记 阅读:27

MySQL逻辑运算符

逻辑运算符又称为布尔运算符,用来确定表达式的真和假。MySQL中支持的逻辑运算符如下表所示。

MySQL 中的逻辑运算符
运算符 作用
NOT 或者 ! 逻辑非
AND 或者 && 逻辑与
OR 和 || 逻辑或
XOR 逻辑异或
 
下面分别讨论 MySQL 逻辑运算符的使用方法。

逻辑非运算(NOT 或者 !)

NOT!都是逻辑非运算符,返回和操作数相反的结果,具体语法规则为:  
【实例1】分别使用非运算符 NOT 或者 ! 进行逻辑判断,运行结果如下:
mysql> SELECT NOT 10,NOT(1-1),NOT-5,NOT NULL,NOT 1+1;
+--------+----------+-------+----------+---------+
| NOT 10 | NOT(1-1) | NOT-5 | NOT NULL | NOT 1+1 |
+--------+----------+-------+----------+---------+
|      0 |        1 |     0 |     NULL |       0 |
+--------+----------+-------+----------+---------+
1 row in set (0.00 sec)

mysql> SELECT !10,!(1-1),!-5,!NULL,!1+1;
+-----+--------+-----+-------+------+
| !10 | !(1-1) | !-5 | !NULL | !1+1 |
+-----+--------+-----+-------+------+
|   0 |      1 |   0 |  NULL |    1 |
+-----+--------+-----+-------+------+
1 row in set (0.00 sec)

mysql> SELECT !1+1;
+------+
| !1+1 |
+------+
|    1 |
+------+
1 row in set (0.00 sec)
由运行结果可以看出,NOT 1+1! 1+1的返回值不同,这是因为 NOT 与 ! 的优先级不同:
读者在使用运算符运算时,一定要注意运算符的优先级,如果不能确定计算顺序,最好使用括号,以保证运算结果的正确。

逻辑与运算符(AND 或者 &&)

AND 和 && 都是逻辑与运算符,具体语法规则为:
【实例2】分别使用与运算符 AND 和 && 进行逻辑判断,运行结果如下:
mysql> SELECT 1 AND -1,1 AND 0,1 AND NULL, 0 AND NULL;
+----------+---------+------------+------------+
| 1 AND -1 | 1 AND 0 | 1 AND NULL | 0 AND NULL |
+----------+---------+------------+------------+
|        1 |       0 |       NULL |          0 |
+----------+---------+------------+------------+
1 row in set (0.00 sec)

mysql> SELECT 1 && -1,1&&0,1&&NULL,0&&NULL;
+---------+------+---------+---------+
| 1 && -1 | 1&&0 | 1&&NULL | 0&&NULL |
+---------+------+---------+---------+
|       1 |    0 |    NULL |       0 |
+---------+------+---------+---------+
1 row in set (0.00 sec)
由结果可以看到,AND 和 && 的作用相同。1 AND-1中没有 0 或者 NULL,所以返回值为 1;1 AND 0中有操作数 0,所以返回值为 0;1 AND NULL虽然有 NULL,所以返回值为 NULL。
 
注意:AND 运算符可以有多个操作数,但要注意多个操作数运算时,AND 两边一定要使用空格隔开,不然会影响结果的正确性。

逻辑或运算符(OR 或者 ||)

OR 和 || 都是逻辑或运算符,具体语法规则为:
【实例3】分别使用或运算符 OR 和 || 进行逻辑判断,运行结果如下:
mysql> SELECT 1 OR -1 OR 0,1 OR 2,1 OR NULL, 0 OR NULL, NULL OR NULL;
+--------------+--------+-----------+-----------+--------------+
| 1 OR -1 OR 0 | 1 OR 2 | 1 OR NULL | 0 OR NULL | NULL OR NULL |
+--------------+--------+-----------+-----------+--------------+
|            1 |      1 |         1 |      NULL |         NULL |
+--------------+--------+-----------+-----------+--------------+
1 row in set (0.00 sec)

mysql> SELECT 1 || -1 || 0,1||2,1||NULL,0||NULL,NULL||NULL;
+--------------+------+---------+---------+------------+
| 1 || -1 || 0 | 1||2 | 1||NULL | 0||NULL | NULL||NULL |
+--------------+------+---------+---------+------------+
|            1 |    1 |       1 |    NULL |       NULL |
+--------------+------+---------+---------+------------+
1 row in set (0.00 sec)
由结果可以看到,OR 和 || 的作用相同。下面是对各个结果的解析:

异或运算(XOR 运算符)

XOR 表示逻辑异或,具体语法规则为:
【实例4】使用异或运算符 XOR 进行逻辑判断,SQL语句如下:
mysql> SELECT 1 XOR 1,0 XOR 0,1 XOR 0,1 XOR NULL,1 XOR 1 XOR 1;
+---------+---------+---------+------------+---------------+
| 1 XOR 1 | 0 XOR 0 | 1 XOR 0 | 1 XOR NULL | 1 XOR 1 XOR 1 |
+---------+---------+---------+------------+---------------+
|       0 |       0 |       1 |       NULL |             1 |
+---------+---------+---------+------------+---------------+
1 row in set (0.00 sec)
由结果可以看到:
1 XOR 10 XOR 0中运算符两边的操作数都为非零值,或者都是零值,因此返回 0;
1 XOR 0中两边的操作数,一个为 0 值,另一个为非 0 值,所以返回值为 1;
1 XOR NULL中有一个操作数为 NULL,所以返回值为 NULL;
1 XOR 1 XOR 1中有多个操作数,运算符相同,因此运算顺序从左到右依次计算,1 XOR 1的结果为 0,再与 1 进行异或运算,所以返回值为 1。

提示:a XOR b 的计算等同于 (a AND (NOT b))或者 ((NOT a) AND b)。

爱面试的程序媛,一个分享面试经验的公众号。跟着站长一起学习,每天都有进步。

通俗易懂,深入浅出,定时分享程序员面试的那点事。

面试如何造火箭?工作如何拧螺丝?都在这个公号哦。

扫描二维码关注公众号,免费领取价值 1000 元的求职面试资料(限时免费)!

当你决定关注「爱面试的程序媛」,你已然超越了90%的程序员!

爱面试的程序媛二维码
微信扫描二维码关注

所有教程

优秀文章