面分别讨论 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。