MySQL - 真/假查询在两台服务器上返回不同

标签 mysql sql

对此感到困惑。

在两台服务器上运行相同版本的 MySQL。 (从完全相同的 rpm 构建)- 沿线的某个地方,一些开发人员改变了一些东西......

服务器 1:

mysql> select ( not 1 = 2 );

0
1 row in set (0.00 sec)

服务器 2:

mysql> select ( not 1 = 2 );

1
1 row in set (0.00 sec)

两个服务器:

mysql> sHOW VARIABLES LIKE 'version';

| version       | 5.6.12 |

最佳答案

你应该检查 HIGH_NOT_PRECEDENCE运营商。

官方文档指出:

The precedence of the NOT operator is such that expressions such as NOT a BETWEEN b AND c are parsed as NOT (a BETWEEN b AND c). In some older versions of MySQL, the expression was parsed as (NOT a) BETWEEN b AND c. The old higher-precedence behavior can be obtained by enabling the HIGH_NOT_PRECEDENCE SQL mode.

Fiddle 测试此行为 here .

顺便说一句,我建议比较 x != y 而不是使用 not (x = y)

关于MySQL - 真/假查询在两台服务器上返回不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20388361/

相关文章:

mysql - 如何在 MySQL 中实现这一点?

sql - Oracle 序列生成器语法

mysql - 通过MySQL在两个不同的字段名称中选择多行作为一行

MYSQL:将 IN 字符串作为整数数组进行搜索

mysql - 如何将两列的组合值复制到同一个表中的一列

sql - 查询当前表时,Postgresql 插入触发器变慢

mysql - 如何在 ionic 4 客户端应用程序和 Express 服务器之间建立连接?

mysql - ActiveRecord 选择帐户中有 3 列的不同记录

php - 让 MySQL 列从多个选择中更新

javascript - 通过ajax从select框获取值到mysql