MySQL逻辑运算符-逻辑非运算NOT与!的相似区别

本文详细探讨了SQL中逻辑运算符NOT和!的用法及其返回值。在通常情况下,NOT和!对操作数取反,但它们的运算优先级不同,可能导致结果的差异。例如,在表达式NOT1+1和!1+1中,由于运算符优先级!>+>NOT,NOT1+1会先进行加法运算再取反,而!1+1则是先取反再加法。因此,使用这些运算符时应合理使用括号来确保计算顺序的正确性。
摘要由CSDN通过智能技术生成

一般情况下,NOT与!都表示逻辑非运算,即对操作数取反

  • 当操作数为假值/0/小于0时,返回1;
  • 当操作数为真值/大于0时,返回0;
  • 当操作数为NULL时,返回NULL。
select NOT(1),!1,NOT(0),!0;
# 结果: 
+--------+----+--------+----+
| NOT(1) | !1 | NOT(0) | !0 |
+--------+----+--------+----+
|      1 |  1 |      1 |  1 |
+--------+----+--------+----+

由结果可见,上述sql语句NOT与!返回值相同

但是,NOT与!的返回值也不是每次都相同的,如下:

select NOT 1+1, !+1;
+---------+------+
| NOT 1+1 | !1+1 |
+---------+------+
|       0 |    1 |
+---------+------+

有结果可见,NOT 1+1和!1+1的返回值不同,原因是运算符的优先级不同
优先级:! > + > NOT ,
所以  (1) NOT 1+1 等价于 NOT(1+1),即先计算1+1=2,然后在计算NOT(2)=0
    (2) !1+1 等价于 (!1)+1,即先计算!1=0,然后再计算0+1=1


在使用逻辑运算符时,最好灵活使用括号,以确保计算顺序

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值