文档首页
MySQL 9.0 参考手册
相关文档 下载本手册
PDF (US Ltr) - 40.0Mb
PDF (A4) - 40.1Mb
手册页 (TGZ) - 258.2Kb
手册页 (Zip) - 365.3Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb


MySQL 9.0 参考手册  /  ...  /  运算符优先级

14.4.1 运算符优先级

运算符优先级如下所示,从最高优先级到最低优先级。同一行中显示的运算符具有相同的优先级。

INTERVAL
BINARY, COLLATE
!
- (unary minus), ~ (unary bit inversion)
^
*, /, DIV, %, MOD
-, +
<<, >>
&
|
= (comparison), <=>, >=, >, <=, <, <>, !=, IS, LIKE, REGEXP, IN, MEMBER OF
BETWEEN, CASE, WHEN, THEN, ELSE
NOT
AND, &&
XOR
OR, ||
= (assignment), :=

= 的优先级取决于它用作比较运算符 (=) 还是赋值运算符 (=)。当用作比较运算符时,它与 <=>>=><=<<>!=ISLIKEREGEXPIN() 具有相同的优先级。当用作赋值运算符时,它与 := 具有相同的优先级。 第 15.7.6.1 节,“SET 语法用于变量赋值”第 11.4 节,“用户定义的变量” 解释了 MySQL 如何确定应该应用的 = 的哪种解释。

对于在表达式中以相同优先级出现的运算符,求值从左到右进行,但赋值从右到左进行。

一些运算符的优先级和含义取决于 SQL 模式

  • 默认情况下,|| 是逻辑 OR 运算符。启用 PIPES_AS_CONCAT 时,|| 是字符串连接,其优先级介于 ^ 和一元运算符之间。

  • 默认情况下,! 的优先级高于 NOT。启用 HIGH_NOT_PRECEDENCE 时,!NOT 具有相同的优先级。

参见 第 7.1.11 节,“服务器 SQL 模式”

运算符的优先级决定了表达式中各词语的求值顺序。要覆盖此顺序并明确地对词语进行分组,请使用括号。例如

mysql> SELECT 1+2*3;
        -> 7
mysql> SELECT (1+2)*3;
        -> 9