运算符优先级
运算符优先级从最高优先级到最低优先级显示在以下列表中。在一行上一起显示的运算符具有相同的优先级。
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), :=
=的优先级,取决于它是用作比较运算符(=
),还是用作赋值运算符(=
)。当作为比较操作符使用,它具有相同的优先级<=>
,>=
,>
,<=
,<
,<>
,!=
,IS
,LIKE
,REGEXP
,和IN()
。当用作赋值运算符时,它的优先级与相同:=
。“变量分配的SET语法”和“用户定义的变量”介绍了MySQL如何确定对变量的解释=
应该适用。
对于在表达式中以相同优先级出现的运算符,运算从左至右进行,但赋值从右至左进行运算。
一些运算符的优先级和含义取决于SQL模式:
- 默认情况下,
||
是逻辑OR
运算符。与PIPES_AS_CONCAT
启用,||
是字符串连接,与之间的优先级^
和元运算符。 - 默认情况下,
!
其优先级高于NOT
。随着HIGH_NOT_PRECEDENCE
启用,!
并且NOT
具有相同的优先级。
请参见“服务器SQL模式”。
运算符的优先级确定表达式中项的求值顺序。要显式覆盖此顺序并将术语分组,请使用括号。例如:
mysql>SELECT 1+2*3; -> 7 mysql>SELECT (1+2)*3; -> 9