1

在 MySQL 中,NOT!同样的事情(Logical Not),但它们处于不同的运算符优先级。 !出现在算术和相等运算符之上,NOT低于那些但高于逻辑运算符,如ANDand OR。见http://dev.mysql.com/doc/refman/5.7/en/operator-precedence.html

在 MySQL 3 和 4 中,它们共享相同的优先级。为什么会做出这样的改变?

4

1 回答 1

2

鉴于HIGH_NOT_PRECEDENCE引入了一个标志来恢复旧的行为,我认为文档的那部分解释得最好:

NOT 运算符的优先级使得诸如 NOT a BETWEEN b AND c 之类的表达式被解析为 NOT (a BETWEEN b AND c)。在一些旧版本的 MySQL 中,表达式被解析为 (NOT a) BETWEEN b AND c。

换句话说,NOT它的行为不像很多人认为的那样,因此优先级发生了变化。写作时你不太可能绊倒它,!a因为它更直观地表达了你的否定a

于 2014-01-16T21:23:13.763 回答