MySQL OR 运算符的用法
本文介绍了 MySQL 中如何在 WHERE 子句中使用 OR 运算符组合多个查询条件过滤查询数据。
当使用 SELECT 查询数据时,如果 WHERE 子句中有多个条件,可以根据需要使用 AND, OR
, 或者 NOT
运算符将他们组合起来。本文主要介绍 OR 运算符。
OR运算规则
OR
运算符是一个双目逻辑运算符,用来组合两个操作数。只要两个操作数中的一个为真时,结果就返回真,否则返回假或者 NULL
。
OR 运算符语法:
a OR b
其中,a 和 b 是 OR 的两个操作数,可以是表达式,也可以是值。
MySQL 中没有布尔类型,OR 的运算结果是 1, 0, 或着 NULL。
OR 运算符的运算规则如下:
- 如果两个操作数中
至少一个操作数为 1
(TURE),则 OR 运算的结果为1
。
SELECT 1 OR 1, 1 OR 0, 1 OR NULL, 2 OR 0;
+--------+--------+-----------+--------+
| 1 OR 1 | 1 OR 0 | 1 OR NULL | 2 OR 0 |
+--------+--------+-----------+--------+
| 1 | 1 | 1 | 1 |
+--------+--------+-----------+--------+
- 如果两个操作数
都为 0
(FALSE),则 OR 运算的结果为0
。
SELECT 0 OR 0;
+--------+
| 0 OR 0 |
+--------+
| 0 |
+--------+
- 如果两个操作数
有一个为 NULL
,另一个为 0 (FALSE) 或者 NULL
,则 OR 运算的结果为NULL
。
SELECT NULL OR 0, NULL or NULL;
+-----------+--------------+
| NULL OR 0 | NULL or NULL |
+-----------+--------------+
| NULL | NULL |
+-----------+--------------+
- 两个操作数的
前后顺序不影响 OR 操作符的运算结果
。
SELECT 1 OR 0, 0 OR 1, 1 OR NULL, NULL OR 1, 0 OR NULL, NULL OR 0;
+--------+--------+-----------+-----------+-----------+-----------+
| 1 OR 0 | 0 OR 1 | 1 OR NULL | NULL OR 1 | 0 OR NULL | NULL OR 0 |
+--------+--------+-----------+-----------+-----------+-----------+
| 1 | 1 | 1 | 1 | NULL | NULL |
+--------+--------+-----------+-----------+-----------+-----------+
运算符优先级
当组合表达式同时包含 AND 和 OR 运算符时,MySQL 使用运算符优先级来确定运算符的计算顺序。MySQL 首先运算具有更高优先级的运算符。
由于 AND 运算符的优先级高于 OR 运算符
,因此 MySQL 在 AND 运算符之前评估运算 OR 符。例如:
SELECT 1 OR 0 AND 0;
+--------------+
| 1 OR 0 AND 0 |
+--------------+
| 1 |
+--------------+
1 row in set (0.00 sec)
运算步骤如下:
1 OR 0 AND 0
= 1 OR (0 AND 0)
= 1 OR 0
= 1
如果要更改计算顺序,请使用括号。例如:
SELECT (1 OR 0) AND 0;
+----------------+
| (1 OR 0) AND 0 |
+----------------+
| 0 |
+----------------+
1 row in set (0.00 sec)
结论
本文通过实例介绍了 MySQL 中 OR 运算符的语法和用法。 OR 运算符的用法要点如下:
- OR 是双目运算符,需要两个布尔操作数。
- 如果两个操作数中
至少一个操作数为 1
(TURE),则 OR 运算的结果为1
。 - 如果两个
操作数都为 0
(FALSE),则 OR 运算的结果为0
。 - 如果两个操作数
有一个为 NULL
,另一个为 0 (FALSE) 或者NULL
,则 OR 运算的结果为NULL
。 - 两个操作数的
前后顺序不影响 OR 操作符的运算结果
。 AND 运算符的优先级高于OR
。使用括号
更改计算顺序。- WHERE 子句中的 OR 连接两个比较条件,过滤那些至少满足其中一个比较条件的记录行。