MySQL OR 运算符
简介:在本教程中,您将学习如何使用MySQL
OR
运算符组合布尔表达式来过滤数据。
MySQL OR运算符简介
MySQLOR
运算符组合两个布尔表达式,当任一条件为真时返回true。
以是OR
运算符的语法。
boolean_expression_1 OR boolean_expression_2这两个
boolean_expression_1
和boolean_expression_2
是返回真,假,或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 row in set (0.00 sec)因为表达式
1 = 1
总是返回true,所以MySQL不会再评估1 / 0
.如果确实如此,它会因为零除错误而发出错误。
运算符优先级
当您在表达式中使用多个逻辑运算符时,MySQL始终会在AND
运算符之后计算OR
运算符。这称为运算符优先级,它确定运算符的执行顺序。MySQL首先评估具有更高优先级的运算符。
请参阅以下示例。
SELECT true OR false AND false;运行结果:
| true OR false AND false | +-------------------------+ | 1 | +-------------------------+ 1 row in set (0.00 sec)这个怎么运作
- 首先,MySQL评估
AND
运算符,因此表达式false AND false
返回false。 - 其次,MySQL评估
OR
运算符,因此表达式true OR false
返回true。
SELECT (true OR false) AND false;运行结果:
+---------------------------+ | (true OR false) AND false | +---------------------------+ | 0 | +---------------------------+ 1 row in set (0.00 sec)这个怎么运作
- 首先,MySQL评估括号中的表达式
(true OR false)
返回true - 其次,MySQL评估语句的剩余部分,
true AND false
返回false。
MySQL OR运算符示例
我们将使用示例数据库中的customers
表进行演示。
+------------------------+ | customers | +------------------------+ | customerNumber | | customerName | | contactLastName | | contactFirstName | | phone | | addressLine1 | | addressLine2 | | city | | state | | postalCode | | country | | salesRepEmployeeNumber | | creditLimit | +------------------------+ 13 rows in set (0.01 sec)例如,要获得位于美国或法国的客户,请在
WHERE
子句中使用OR
运算符:
SELECT customername, country FROM customers WHERE country = 'USA' OR country = 'France';运行结果:
+------------------------------+---------+ | customername | country | +------------------------------+---------+ | Atelier graphique | France | | Signal Gift Stores | USA | | La Rochelle Gifts | France | | Mini Gifts Distributors Ltd. | USA | | Mini Wheels Co. | USA | | Land of Toys Inc. | USA |正如您可以看到结果一样,查询将返回位于美国或法国的客户。 以下实例返回位于美国或法国且信用额度大于10,000的客户。
SELECT customername, country, creditLimit FROM customers WHERE(country = 'USA' OR country = 'France') AND creditlimit > 100000;运行结果:
+------------------------------+---------+-------------+ | customername | country | creditLimit | +------------------------------+---------+-------------+ | La Rochelle Gifts | France | 118200.00 | | Mini Gifts Distributors Ltd. | USA | 210500.00 | | Land of Toys Inc. | USA | 114900.00 | | Saveley & Henriot, Co. | France | 123900.00 | | Muscle Machine Inc | USA | 138500.00 | | Diecast Classics Inc. | USA | 100600.00 | | Collectable Mini Designs Co. | USA | 105000.00 | | Marta's Replicas Co. | USA | 123700.00 | | Mini Classics | USA | 102700.00 | | Corporate Gift Ideas Co. | USA | 105000.00 | | Online Diecast Creations Co. | USA | 114200.00 | +------------------------------+---------+-------------+ 11 rows in set (0.02 sec)请注意,如果您不使用括号,查询将返回位于美国的客户或位于法国且信用额度大于10,000的客户。
SELECT customername, country, creditLimit FROM customers WHERE country = 'USA' OR country = 'France' AND creditlimit > 100000;运行结果:
+------------------------------+---------+-------------+ | customername | country | creditLimit | +------------------------------+---------+-------------+ | Signal Gift Stores | USA | 71800.00 | | La Rochelle Gifts | France | 118200.00 | | Mini Gifts Distributors Ltd. | USA | 210500.00 | | Mini Wheels Co. | USA | 64600.00 | | Land of Toys Inc. | USA | 114900.00 | | Saveley & Henriot, Co. | France | 123900.00 | ...在本教程中,您学习了如何使用MySQL
OR
运算符组合布尔表达式来过滤数据。