【MySQL】逻辑运算符

129 阅读4分钟

本人已参与「新人创作礼」活动,一起开启掘金创作之路。

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第15天,点击查看活动详情

目录

133ED8E3.gif 今天阿文介绍的内容

  • 什么是逻辑运算符
  • 逻辑运算符包括哪些?

1.逻辑运算符

在SQL中,所有逻辑运算符的求值所得结果均为TRUEFALSENULL。在MySQL中,它们体现为1(TRUE)、0(FALSE)和NULL。逻辑运算符大多数都与不同的数据库SQL通用。MySQL中的逻辑运算符如下表:

Snipaste_2022-09-05_08-39-05.png

1.1NOT或者!

逻辑非运算符NOT或者表示当操作数为0时,所得值为1;当操作数为非零值时,所得值为0;当操作数为NULL时,所得的返回值为NULL。

“NOT”的优先级低于“+”,因此“NOT 1+1”相当于“NOT(1+1)”,先计算“1+1”,然后再进行NOT运算,因为操作数不为0,因此NOT 1+1的结果是0;

相反,“!”的优先级要高于“+”运算,因此“!1+1”相当于“(!1)+1”,先计算“!1”,结果为0,再加1,最后结果为1。

提示: 在使用运算符运算时,一定要注意不同运算符的优先级不同。如果不能确定计算顺序,最好使用括号,以保证运算结果的正确。

例子:

SELECT NOT 0+1, ! 0+1, NOT NULL, ! NULL;

输出结果为:

image.png 可以看到NOT 和 !的优先级是不同的

1.2AND或者&&

逻辑与运算符AND或者&&表示当所有操作数均为非零值并且不为NULL时,计算所得结果为1;当一个或多个操作数为0时,所得结果为0;其余情况返回值为NULL。

“AND”和“&&”的作用相同。“1 AND -1”中没有0或者NULL,因此结果为1;“1 AND 0”中有操作数0,因此结果为0;“1 AND NULL”中虽然有NULL,但是没有操作数0,返回结果为NULL。

提示:“AND”运算符可以有多个操作数,需要注意的是:多个操作数运算时,AND两边一定要使用空格隔开,不然会影响结果的正确性。

例子:

SELECT 1 AND 0, 1 && -1, NULL AND 0, NULL && 1, NULL AND NULL;

输出结果:

image.png 这里的 NULL AND 0返回的结果为0,是因为有操作数0所以返回0。

1.3OR或者||

逻辑或运算符OR或者||表示当两个操作数均为非NULL值且任意一个操作数为非零值时,结果为1,否则结果为0;当有一个操作数为NULL,且另一个操作数为非零值时,则结果为1,否则结果为NULL;当两个操作数均为NULL时,则所得结果为NULL。

“OR”和“||”的作用相同。“1 OR -1OR 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。

例子:

SELECT 1 OR 0, NULL OR 1, NULL || 0, NULL OR NULL;

输出结果:

image.png

1.4XOR

逻辑异或运算符XOR表示当任意一个操作数为NULL时,返回值为NULL;对于非NULL的操作数,如果两个操作数都是非0值或者都是0值,则返回结果为0;如果一个为0值、另一个为非0值,返回结果为1。

在“1 XOR 1”和“0 XOR 0”中,运算符两边的操作数都为非零值或者都是零值,因此返回0;在“1XOR 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)。

例子:

SELECT 1 XOR 1, 0 XOR 0, 1 XOR 0, NULL XOR 0, NULL XOR NULL; 

输出结果:

image.png


总结

  • 逻辑运算符有四种:NOT(!), AND(&&), OR(||), XOR,它们的逻辑判断都不相同

好了,今天阿文就介绍到这了...

133F9434.gif