为什么 MySQL 将 “TRUE or TRUE and FALSE” 评估为 true?


MySQL 将 “TRUE or TRUE and FALSE” 评估为 true,因为 AND 优先级高于 OR,即 AND 先于 OR 评估。

MySQL 如下评估以上语句。AND 运算符首先被评估 −

(TRUE or (TRUE AND FALSE))

语句 (TRUE AND FALSE) 返回 FALSE。然后第二个语句如下评估 −

(TRUE or FALSE)

以上语句返回 TRUE。

让我们逐个实现 −

mysql> select (TRUE AND FALSE);
+------------------+
| (TRUE AND FALSE) |
+------------------+
|                0 |
+------------------+
1 row in set (0.00 sec)

现在我们可以将以上结果放在 AND 条件中 −

mysql> select (TRUE or FALSE);
+-----------------+
| (TRUE or FALSE) |
+-----------------+
|               1 |
+-----------------+
1 row in set (0.00 sec)

现在再次检查整个条件 −

mysql> select (TRUE or TRUE and FALSE);

将产生以下输出 −

+--------------------------+
| (TRUE or TRUE and FALSE) |
+--------------------------+
|                        1 |
+--------------------------+
1 row in set (0.00 sec)

更新于: 2019-07-30

163 次浏览

开启您的 “职业生涯”

完成课程以获得认证

开始
广告