MySQL OR运算符使用实例优先级介绍

摘要:本教程介绍如何使用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

执行顺序如下:

  1. 首先,MySQL计算AND运算符,这是,false AND false返回false。
  2. 第二,MySQL计算OR运算符,这是,true OR false返回true。

要更改计算的顺序,请使用括号,例如:

SELECT (true OR false) AND false;

 结果如下:

(true OR false) AND false
-------------------------
0

执行顺序如下:

  1. 首先,MySQL计算圆括号中的表达式(true OR false)返回true
  2. 第二,MySQL计算剩余语句部分,true AND false返回false。

 

MySQL OR运算符示例

我们使用示例数据库中的customers表进行测试。

MySQL OR运算符使用实例优先级介绍

例如,要获取位于美国和法国的客户,请在WHERE子句中使用OR运算符,如下所示:

SELECT 
    customername, country
FROM
    customers
WHERE
    country = 'USA' OR country = 'France';

结果如图所示:

MySQL OR运算符使用实例优先级介绍

以下语句获取位于美国或法国并且信用额度(creditlimit)大于10000的客户。

SELECT 
    customername, country, creditLimit
FROM
    customers
WHERE
    (country = 'USA' OR country = 'France')
        AND creditlimit > 100000;

结果如图所示:

 MySQL OR运算符示例

请注意,如果不使用括号,查询将返回美国的客户或信用额度(creditlimit)大于10000的法国的客户。

SELECT
    customername, country, creditLimit
FROM
    customers
WHERE
    country = 'USA' OR country = 'France' AND creditlimit > 100000;

结果如图所示:

 MySQL OR运算符示例

在本教程中,您已经学习了如何使用MySQL OR运算符组合布尔表达式来过滤数据。