文档首页
MySQL 8.4 参考手册
相关文档 下载本手册
PDF (US Ltr) - 39.9Mb
PDF (A4) - 40.0Mb
手册页 (TGZ) - 258.5Kb
手册页 (Zip) - 365.5Kb
信息 (Gzip) - 4.0Mb
信息 (Zip) - 4.0Mb


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

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