Spec-Zone.ru › 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), :=

Приоритет оператора = зависит от того, используется ли он как оператор сравнения (=) или как оператор присваивания (=). Когда он используется как оператор сравнения, он имеет тот же приоритет, что и <=>, >=, >, <=, <, <>, !=, IS, LIKE, REGEXP и IN(). При использовании как оператор присваивания, он имеет тот же приоритет, что и :=. Раздел 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

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/operator-precedence.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API