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

MySQL将“ TRUE或TRUE和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)
猜你喜欢