MySQL逻辑运算符
运算符 | 作用 |
|---|---|
NOT 或者 ! | 逻辑非 |
AND 或者 && | 逻辑与 |
OR 和 || | 逻辑或 |
XOR | 逻辑异或 |
下面分别讨论 MySQL 逻辑运算符的使用方法。
逻辑非运算(NOT 或者 !)
NOT和!都是逻辑非运算符,返回和操作数相反的结果,具体语法规则为:当操作数为 0(假)时,返回值为 1;
当操作数为非零值时,返回值为 0;
当操作数为 NULL 时,返回值为 NULL。
【实例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 与 ! 的优先级不同:- NOT 的优先级低于 +,因此
NOT 1+1相当于NOT(1+1),先计算1+1,然后再进行 NOT 运算,由于操作数不为 0,因此NOT 1+1的结果是 0; - 相反,! 的优先级别要高于 +,因此
! 1+1相当于(!1)+1,先计算!1结果为 0,再加 1,结果为 1。
读者在使用运算符运算时,一定要注意运算符的优先级,如果不能确定计算顺序,最好使用括号,以保证运算结果的正确。
逻辑与运算符(AND 或者 &&)
AND 和 && 都是逻辑与运算符,具体语法规则为:
当所有操作数都为非零值并且不为 NULL 时,返回值为 1;
当一个或多个操作数为 0 时,返回值为 0;
操作数中有任何一个为 NULL 时,返回值为 NULL。
【实例2】分别使用与运算符 AND 和 && 进行逻辑判断,运行结果如下:
由结果可以看到,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)
1 AND-1中没有 0 或者 NULL,所以返回值为 1;1 AND 0中有操作数 0,所以返回值为 0;1 AND NULL虽然有 NULL,所以返回值为 NULL。注意:AND 运算符可以有多个操作数,但要注意多个操作数运算时,AND 两边一定要使用空格隔开,不然会影响结果的正确性。
逻辑或运算符(OR 或者 ||)
OR 和 || 都是逻辑或运算符,具体语法规则为:
当两个操作数都为非 NULL 值时,如果有任意一个操作数为非零值,则返回值为 1,否则结果为 0;
当有一个操作数为 NULL 时,如果另一个操作数为非零值,则返回值为 1,否则结果为NULL;
假如两个操作数均为 NULL 时,则返回值为 NULL。
【实例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 和 || 的作用相同。下面是对各个结果的解析:
1 OR -1 OR 0含有 0,但同时包含有非 0 的值 1 和 -1,所以返回结果为 1;1 OR 2中没有操作数 0,所以返回结果为 1;1 OR NULL虽然有 NULL,但是有操作数 1,所以返回结果为 1;0 OR NULL中没有非 0 值,并且有 NULL,所以返回值为 NULL;NULL OR NULL中只有NULL,所以返回值为NULL。
异或运算(XOR 运算符)
XOR 表示逻辑异或,具体语法规则为:
当任意一个操作数为 NULL 时,返回值为 NULL;
对于非 NULL 的操作数,如果两个操作数都是非 0 值或者都是 0 值,则返回值为 0;
如果一个为0值,另一个为非 0 值,返回值为 1。
【实例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 1和0 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)。
- 随机文章
- 日本 马尔代夫 石油(日本和马尔代夫的石油合作加强。)
- 南非马尔代夫豪宅(南非推出豪华度假别墅,超越马尔代夫)
- 带鱼竿去马尔代夫(带鱼竿玩转马尔代夫,深度钓鱼之旅!)
- 情侣海边马尔代夫(情侣共赴马尔代夫,浪漫海边约定未来)
- 带你旅行马尔代夫(沉浸在蓝色海水中的绝美马尔代夫游记)
- 成都 马尔代夫(成都公园内惊现马尔代夫风光)
- 抚州马尔代夫风景(走近江南水乡,享受抚州马尔代夫风景)
- 瑞吉马尔代夫沙屋(重温海上明珠瑞吉马尔代夫的沙屋之美)
- 南昌出发马尔代夫(南昌起飞,享受马尔代夫曼妙海岛游!)
- 喜苑 马尔代夫(喜苑度假村:您在马尔代夫的私人天堂)
- 江滨公园马尔代夫(江滨公园的马尔代夫式海景:美不胜收)
- 武汉 马尔代夫(武汉市民即将可以前往马尔代夫旅游!)
- 莱芜马尔代夫在哪(莱芜市民去哪儿了?马尔代夫等你来!)
- 订购马尔代夫机票(预订马尔代夫航班,享受海岛度假之旅)
- 眉山 马尔代夫(眉山游客不用出国也能体验马尔代夫风情)
- 迪拜马尔代夫厨房(迪拜马尔代夫:一起探索当地厨房文化)
- 滞留国外马尔代夫(被滞留在马尔代夫的中国游客日益增多)
- 西北 马尔代夫(探索西北海域,发现马尔代夫!)
- 锦州马尔代夫图片(锦州逼真马尔代夫场景惊艳,美不胜收)
- 中国 马尔代夫 苏州(中国、马尔代夫和苏州:三地旅游胜地)
- 马尔代夫下网了吗(马尔代夫因断电,暂停部分网络服务。)
- 马尔代夫不带照片(马尔代夫旅游注意事项,助您拍出美照)
- 遇见马尔代夫图片(醉人的马尔代夫:绝美海岛与璀璨阳光)
- 马尔代夫专业代理(马尔代夫旅游专家提供专业代订服务!)
- 梦中婚礼马尔代夫(梦境成真!马尔代夫梦幻婚礼完美落幕)
- 马尔代夫主场沈阳(马尔代夫国家足球队将在沈阳主场比赛)
- 河南 马尔代夫(河南旅游首推马尔代夫,海岛度假圆梦从此开始)
- 马尔代夫全包滑梯(马尔代夫全包度假村首创滑梯玩乐活动)
- 马尔代夫卢比视频(马尔代夫卢比视频曝光,引发舆论关注)
- 马尔代夫其他小岛(马尔代夫未知小岛:探索更多秘境之旅)
