12.4.1 Приоритет операторов
Приоритет операторов показан в следующем списке, от наивысшего к наименьшему. Операторы, показанные вместе в строке, имеют одинаковый приоритет.
INTERVAL
BINARY, COLLATE
!
- (unary minus), ~ (unary bit inversion)
^
*, /, DIV, %, MOD
-, +
<<, >>
&
|
= (comparison), <=>, >=, >, <=, <, <>, !=, IS, LIKE, REGEXP, IN
BETWEEN, CASE, WHEN, THEN, ELSE
NOT
AND, &&
XOR
OR, ||
= (assignment), :=
Приоритет оператора = зависит от того, используется ли он как оператор сравнения (=) или как оператор присваивания (=). При использовании в качестве оператора сравнения, он имеет тот же приоритет, что и <=>, >=, >, <=, <, <>, !=, IS, LIKE, REGEXP и IN(). При использовании в качестве оператора присваивания, он имеет тот же приоритет, что и :=. Раздел 13.7.4.1, “Синтаксис SET для присваивания переменных” и Раздел 9.4, “Пользовательские переменные”, объясняют, как MySQL определяет, какое толкование оператора = должно применяться.
Для операторов, которые встречаются на одном уровне приоритета в выражении, вычисление происходит слева направо, за исключением присваиваний, которые вычисляются справа налево.
Приоритет и значение некоторых операторов зависят от режима SQL:
По умолчанию,
||является логическимORоператором. При включенном режимеPIPES_AS_CONCAT,||является оператором конкатенации строк с приоритетом между^и унарными операторами.По умолчанию,
!имеет более высокий приоритет, чемNOT. При включенном режимеHIGH_NOT_PRECEDENCE,!иNOTимеют одинаковый приоритет.
Смотрите Раздел 5.1.10, “Режимы SQL сервера”.
Приоритет операторов определяет порядок вычисления элементов в выражении. Для переопределения этого порядка и явного группирования элементов используйте скобки. Например:
mysql> SELECT 1+2*3;
-> 7
mysql> SELECT (1+2)*3;
-> 9
© 2025 Oracle
Licensed under the GPLv2 License.