全部產品
Search
文件中心

PolarDB:運算子優先順序

更新時間:Jul 06, 2024

本文介紹了PolarDB-X 1.0中運算子的優先順序。

PolarDB-X 1.0操作符的優先順序由高到低,如下所示:

優先順序運算子
15!
14-(負號), ~
13^
12*,/,%,MOD
11+,-
10<<,>>
9&
8|
7=(比較子等於),<=>,>,>=,<,<=,<>,!=,IS,LIKE,REGEXP,IN
6BETWEEN
5NOT
4AND, &&
3XOR
2OR, ||
1=(賦值運算子)

IN/NOT IN與=優先順序

在MySQL 5.7.19中執行如下SQL:

mysql> select binary 'a' = 'a' in (1, 2, 3);
+-------------------------------+
| binary 'a' = 'a' in (1, 2, 3) |
+-------------------------------+
|                             1 |
+-------------------------------+
1 row in set, 1 warning (0.01 sec)

mysql> show warnings;
+---------+------+---------------------------------------+
| Level   | Code | Message                               |
+---------+------+---------------------------------------+
| Warning | 1292 | Truncated incorrect DOUBLE value: 'a' |
+---------+------+---------------------------------------+
1 row in set (0.00 sec)

mysql> select 1 in (1, 2, 3) = 'a';
+----------------------+
| 1 in (1, 2, 3) = 'a' |
+----------------------+
|                    0 |
+----------------------+
1 row in set, 1 warning (0.00 sec)

mysql> show warnings;
+---------+------+---------------------------------------+
| Level   | Code | Message                               |
+---------+------+---------------------------------------+
| Warning | 1292 | Truncated incorrect DOUBLE value: 'a' |
+---------+------+---------------------------------------+
1 row in set (0.00 sec)
            

可見,在MySQL中,IN/NOT IN的優先順序高於=(比較子),在PolarDB-X 1.0中,嚴格按照以上優先順序實現,在優先順序相同的情況下,採用左結合的方式。