MySQL OR运算符

简介:在本教程中,您将学习如何使用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运算符的结果。

TRUEFALSENULL
TRUETRUETRUETRUE
FALSETRUEFALSENULL
NULLTRUENULLNULL

运算符优先级

当您在一个表达式中使用多个逻辑运算符时,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短路评估

MySQL对OR运算符使用短路评估。
换句话说,MySQL可以在确定结果时停止评估语句的其余部分。

请参见以下示例。

SELECT 1 = 1 OR 1 / 0;
1 = 1 OR 1 / 0
--------------
1

因为表达式1 = 1始终返回true,所以MySQL不会计算1 /0。
如果是,则将由于除零错误而发出错误。

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运算符组合布尔表达式来过滤数据。

日期:2019-11-20 08:52:04 来源:oir作者:oir