すべてのプロダクト
Search
ドキュメントセンター

PolarDB:演算子の優先順位

最終更新日:Mar 29, 2026

PolarDB-X 1.0 では、SQL 演算子が固定された優先順位に従って評価されます。同一の優先順位を持つ演算子が複数存在する場合、左から右へと順に評価されます。

以下の表は、サポートされるすべての演算子を、優先順位の高いものから低いものへと並べたものです。

優先順位オペレーター説明
15!論理否定(NOT)
14-(単項マイナス)、~単項否定、ビット単位 NOT
13^ビット単位排他的論理和(XOR)
12*/%MOD乗算、除算、剰余算
11+-加算、減算
10<<>>ビット単位シフト
9&ビット単位論理積(AND)
8|ビット単位論理和(OR)
7=(比較)、<=>>>=<<=<>!=ISLIKEREGEXPIN比較演算子
6BETWEEN範囲包含
5NOT論理否定
4AND&&論理積(AND)
3XOR論理排他的論理和(XOR)
2OR||論理和(OR)
1=(代入)変数への代入
任意の式においてデフォルトの優先順位をオーバーライドするには、括弧を使用してください。

IN および NOT IN 対 = 比較演算子

IN および NOT IN の優先順位は、= 比較演算子より高くなります。以下の例は MySQL 5.7.19 で実行され、この優先順位の違いがクエリ結果に与える影響を示しています。

例 1: IN= よりも先に評価されます。'a' in (1, 2, 3) の式が最初に評価され、1(真)を返します。その後、binary 'a' = 1 が評価されます。

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)

例 2: 1 in (1, 2, 3) が最初に評価され、1(真)を返します。その後、1 = 'a' が評価され、0(偽)を返します。

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)
PolarDB-X 1.0 は、上記の優先順位表を厳密に準拠します。