3.3 OR 运算符
本教程将学习如何使用MySQL OR运算符组合布尔表达式来过滤数据。
MySQL OR运算符介绍
MySQL OR运算符组合了两个或两个以上布尔表达式。当任一条件为真时,返回true。
下面说明了OR运算符的语法。
boolean_expression_1 OR boolean_expression_2boolean_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可以确定结果时,MySQL会停止评估(求值计算)语句的其余部分。
请参见以下示例。
SELECT 1 = 1 OR 1 / 0;执行上面代码,得到以下结果 -
因为表达式1 = 1总是返回true,MySQL不会对1/0进行求值。如果是这样,它会发出一个除以零错误的错误消息。
运算符优先级
当您在语句中使用多个逻辑运算符时,MySQL会在AND运算符之后再对OR运算符进行求值。 这称为运算符优先级。
运算符优先级决定运算符的求值顺序。 MySQL首先对优先级较高的运算符进行求值。
请参见以下示例。
执行上面查询,得到如下结果 -
上面得出的结果,运算的过程是怎么样呢?
首先,MySQL对
AND运算符求值,因此,false AND false返回false。其次,MySQL对
OR运算符求值,根据返回的false值再执行AND运算,因此true OR false返回true。
要更改评估/求值的顺序,请使用括号,例如:
执行上面查询,得到如下结果 -
上面得出的结果,运算的过程是怎么样呢?
首先,MySQL计算小括号中的表达式(
true OR false)返回true第二,MySQL评估求值语句的剩余部分,将上面第一步中计算出的表达式结果-
true和剩余部分求值,即:true AND false返回false。
MySQL OR运算符示例
下面,我们将使用示例数据库(yiibaidb)中的customers表进行演示。customers表的结果如下所示 -
例如,要获得美国(USA)或者法国(France)的客户,请在WHERE子句中使用OR运算符,如下所示:
执行上面代码,得到如下结果 -
以下声明返回位于美国(USA)或者法国(France),并且信用额度大于10000的客户。
执行上面代码,得到如下结果 -
请注意,如果不使用括号,查询将返回位于美国的客户或者位于法国并且信用额度大于10000的客户。
执行上面代码,得到如下结果(共 38 行) -
在本教程中,您已经学习了如何使用MySQL OR运算符来组合布尔表达式来过滤数据。需要注意的是:使用组合运算符时,OR运算符和AND运算符的求值顺序。
Last updated
Was this helpful?