このトピックでは、PolarDB-Xでサポートされる演算子について説明します。
論理演算子
PolarDB-Xは、次の論理演算子をサポートしています。
演算子 | 説明 |
そして、&&& | 論理AND演算子。 |
違うよ! | 論理NOT演算子。 |
||, OR | 論理OR演算子。 |
XOR | 論理XOR演算子。 |
算術演算子
PolarDB-Xは、次の算術演算子をサポートしています。
演算子 | 説明 |
/, DIV | 除算演算子。 |
%, MOD | 数値を別の数値で割ったときに得られる余りを返します。 |
+ | 加算演算子。 |
* | 乗算演算子。 |
- | 減算演算子。 |
比較演算子
比較演算子は、条件付きSELECTステートメントで頻繁に使用されます。 比較演算子を使用すると、テーブル内のどのレコードが要件を満たしているかを判断できます。 比較の結果が真である場合、1が返される。 結果がfalseの場合は0が返されます。 結果が不確定の場合、NULLが返されます。
PolarDB-Xは、次の比較演算子をサポートしています。
演算子 | 説明 |
= | 値が別の値と等しいかどうかをテストします。 |
<>,! = | 値が別の値と等しくないかどうかをテストします。 |
> | 値が別の値より大きいかどうかをテストします。 |
< | 値が別の値より小さいかどうかをテストします。 |
<= | 値が別の値より大きくないかどうかをテストします。 |
>= | 値が別の値より小さくないかどうかをテストします。 |
の間 | 値が2つの値の間にあるかどうかをテストします。 >=min &&<= max |
の間ではない | 値が2つの値の間にないかどうかをテストします。 |
IN | 値がセットにあるかどうかをテストします。 |
NOT IN | 値がセットにないかどうかをテストします。 |
<=> | 2つの値が等しいかどうかをテストします。 オペランドはNULLにすることができます。 説明 両方のオペランドがNULLの場合、1が返されます。 1つのオペランドがNULLの場合、0が返されます。 |
LIKE | この演算子は、ファジーマッチングに使用される。 |
REGEXPまたはRLIKE | この演算子は、正規表現に基づくマッチングに使用されます。 |
IS NULL | 値がNULLかどうかをテストします。 |
IS NOT NULL | 値がNULLでないかどうかをテストします。 |
ビットごとの演算子
PolarDB-Xは、次のビット演算子をサポートします。
演算子 | 説明 |
& | ビット単位のAND演算子。 |
~ | Bitwise NOT演算子。 |
l | ビットごとのOR演算子。 |
^ | ビットごとのXOR演算子。 |
<< | 左シフト演算子。 |
>> | 右シフト演算子。 |
割り当て演算子
PolarDB-Xは、equality (=) 代入演算子をサポートします。 ほとんどの場合、この演算子はUPDATEステートメントのSET句で使用されます。
PolarDB-Xは、:= assignment演算子をサポートしていません。
演算子の優先順位
次の表に、PolarDB-Xでサポートされている演算子の優先順位を示します。 演算子は、降順の優先順位でリストされます。
優先順位 | 演算子 |
15 | ! |
14 | - (unaryマイナス) と ~ |
13 | ^ |
12 | * 、/、% 、およびMOD |
11 | + と- |
10 | <<,>> |
9 | & |
8 | | |
7 | =(比較演算子), <=>, >, >=, <, <=, <>,! =、IS、LIKE、REGEXP、およびIN |
6 | の間 |
5 | NOT |
4 | そして、&&& |
3 | XOR |
2 | または、| | |
1 | =(代入演算子) |
注
このセクションでは、IN演算子とNOT IN演算子の優先順位が等しい (=) 比較演算子よりも高いかどうかを説明するサンプルコードを示します。
MySQL 5.7.19を実行するデータベースで次のSQL文を実行します。
(1、2、3) でバイナリ 'a' = 'a' を選択します。+ ------------------------------- +
| (1、2、3) のバイナリ 'a' = 'a' |
+ ------------------------------- +
| 1 |
+ ------------------------------- +
セットの1列、1警告 (0.01秒)
警告を表示します。+ -------- + ------- + --------------------------------------- +
| レベル | コード | メッセージ |
+ -------- + ------- + --------------------------------------- +
| 警告 | 1292 | 切り捨てられた誤ったダブル値: 'a' |
+ -------- + ------- + --------------------------------------- +
セットの1列 (0.00秒)
(1、2、3) = 'a' で1を選択します。+ ---------------------- +
| 1 in (1, 2, 3) = 'a' |
+ ---------------------- +
| 0 |
+ ---------------------- +
セットの1列、1警告 (0.00秒)
警告を表示します。+ -------- + ------- + --------------------------------------- +
| レベル | コード | メッセージ |
+ -------- + ------- + --------------------------------------- +
| 警告 | 1292 | 切り捨てられた誤ったダブル値: 'a' |
+ -------- + ------- + --------------------------------------- +
セットの1列 (0.00秒)
返された結果は、INおよびNOT IN演算子がMySQLのequality (=) 比較演算子よりも優先順位が高いことを示しています。 PolarDB-XのSQL文は、同じ優先順位ルールに基づいて実行されます。 同じ優先順位の演算子は、左から右の順に評価されます。