MySQL OR运算符
时间:2019-11-20 08:52:04 来源:igfitidea点击:
简介:在本教程中,您将学习如何使用MySQL OR运算符组合布尔表达式来过滤数据。
MySQL OR运算符简介
MySQL OR运算符组合两个布尔表达式,并在任一条件为true时返回true。
下面说明了OR运算符的语法。
boolean_expression_1 OR boolean_expression_2
boolean_expression_1和boolean_expression_2都是布尔表达式,它们返回true,false或NULL。
下表显示了OR运算符的结果。
TRUE | FALSE | NULL | |
TRUE | TRUE | TRUE | TRUE |
FALSE | TRUE | FALSE | NULL |
NULL | TRUE | NULL | NULL |
MySQL OR短路评估
MySQL对OR运算符使用短路评估。
换句话说,MySQL可以在确定结果时停止评估语句的其余部分。
请参见以下示例。
SELECT 1 = 1 OR 1 / 0;
1 = 1 OR 1 / 0 -------------- 1
因为表达式1 = 1始终返回true,所以MySQL不会计算1 /0。
如果是,则将由于除零错误而发出错误。
运算符优先级
当您在一个表达式中使用多个逻辑运算符时,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计算括号中的表达式(真或假),返回真
- 其次,MySQL评估语句的其余部分,true和false返回false。
MySQL OR运算符示例
我们将使用示例数据库中的"客户"表进行演示。
例如,要获取位于美国或法国的客户,请在WHERE子句中使用OR运算符,如下所示:
SELECT customername, country FROM customers WHERE country = 'USA' OR country = 'France';
如您所见,查询返回了位于美国或法国的客户。
以下语句返回位于美国或法国且信用额度大于100,000的客户。
SELECT customername, country, creditLimit FROM customers WHERE(country = 'USA' OR country = 'France') AND creditlimit > 100000;
请注意,如果不使用括号,查询将返回信用额度大于10,000的美国客户或法国的客户。
SELECT customername, country, creditLimit FROM customers WHERE country = 'USA' OR country = 'France' AND creditlimit > 10000;
在本教程中,您学习了如何使用MySQL OR运算符组合布尔表达式来过滤数据。