摘要:本教程介绍如何使用MySQL OR运算符组合布尔表达式来过滤数据以及OR运算符的优先级。
MySQL OR运算符简介
MySQL OR运算符连接两个或多个布尔表达式。当其中任何一个表达式为true时,它将返回true。
下面是OR运算符的语法:
boolean_expression_1 OR boolean_expression_2
boolean_expression_1 or
boolean_expression_2
这个表达式有可能返回true或false。
下表显示了OR运算符的结果。
TRUE | FALSE | NULL | |
TRUE | TRUE | TRUE | TRUE |
FALSE | TRUE | FALSE | NULL |
NULL | TRUE | NULL | NULL |
MySQL OR短路求值
MySQL对OR运算符使用短路求值。换句话说,MySQL在确定有一个表达式为真时,将不会去判断其他表达式的真假,而是直接终止判断并返回true。
请看下面实例:
SELECT 1 = 1 OR 1 / 0;
结果如下:
1 = 1 OR 1 / 0
--------------
1
因为表达式1 = 1总是返回true,所以MySQL不会计算1/0。如果计算1/0,则会抛出错误消息。
运算符优先级
当您在语句中使用多个逻辑运算符时,如and 和or运算符,MySQL是先计算 AND 运算符,再计算OR运算符。这就是所谓的运算符优先级。
运算符优先级确定运算符的求值顺序。MySQL首先计算具有较高优先级的运算符。
请参阅以下示例。
SELECT true OR false AND false;
结果如下:
true OR false AND false
-----------------------
1
执行顺序如下:
- 首先,MySQL计算AND运算符,这是,
false AND false
返回false。 - 第二,MySQL计算OR运算符,这是,
true OR false
返回true。
要更改计算的顺序,请使用括号,例如:
SELECT (true OR false) AND false;
结果如下:
(true OR false) AND false
-------------------------
0
执行顺序如下:
- 首先,MySQL计算圆括号中的表达式
(true OR false)
返回true - 第二,MySQL计算剩余语句部分,
true AND false
返回false。
MySQL OR运算符示例
我们使用示例数据库中的customers表进行测试。
例如,要获取位于美国和法国的客户,请在WHERE子句中使用OR运算符,如下所示:
SELECT
customername, country
FROM
customers
WHERE
country = 'USA' OR country = 'France';
结果如图所示:
以下语句获取位于美国或法国并且信用额度(creditlimit)大于10000的客户。
SELECT
customername, country, creditLimit
FROM
customers
WHERE
(country = 'USA' OR country = 'France')
AND creditlimit > 100000;
结果如图所示:
请注意,如果不使用括号,查询将返回美国的客户或信用额度(creditlimit)大于10000的法国的客户。
SELECT
customername, country, creditLimit
FROM
customers
WHERE
country = 'USA' OR country = 'France' AND creditlimit > 100000;
结果如图所示:
在本教程中,您已经学习了如何使用MySQL OR运算符组合布尔表达式来过滤数据。
文章评论