1. 算術演算子
加算演算子:
mysql の + は値の加算のみを意味します。数値型以外の場合は値に変換しようとします。変換に失敗した場合は 0 になります。
除算演算子:
- 数値を整数で除算すると、完全に除算できるかどうかに関係なく、結果は小数点以下 4 桁の浮動小数点数になります。
- 数値を 0 で割った値は NULL です。Null はスペースを占有します
2. 比較演算子
比較の結果が true の場合は 1 を返し、比較の結果が false の場合は 0 を返し、それ以外の場合は NULL を返します。
- =: 等号演算子。等号の両側の値が文字列の場合は、文字列内の文字の ANSI コードで比較します。等号の両側の値の一方が整数で、もう一方が文字列の場合、文字列は比較のために数値に変換されます。等号の両側の値、文字列、または式のいずれかが NULL の場合、比較結果は NULL になります。SQL の代入記号には := が使用されます。たとえば、
update table set name := 'name1' where id = 1;
- <=>: 安全な等しい演算子。等号演算子と同様に、両方のオペランドが NULL の場合、戻り値は NULL ではなく 1 になり、一方のオペランドが NULL の場合、戻り値は NULL ではなく 0 になる点が異なります。
- <> および !=: 演算子と等しくありません。等しくない演算子は NULL 値を評価できません。両側のいずれかの値が NULL の場合、または両側が NULL の場合、結果は NULL になります。
- minimum: 最小演算子は、複数の値の中の最小値を返します。たとえば
select least(a, b, c);
。パラメータが整数または浮動小数点数の場合、least は最小値を返します。パラメータが文字列の場合、アルファベットの最初の文字を返します。比較値リストに NULL がある場合、サイズは変更できません。判定され、戻り値はNULLになります - greatest: 最大値演算子は、複数の値の中で最大の値を返します。例えば
select greatest(a, b, c);
- in: 演算子に属します。指定された値が NULL の場合、結果は NULL になります
- 例: あいまい一致演算子。ワイルドカード _ は 1 文字のみと一致します。指定された値または一致条件が NULL の場合、戻り結果は NULL になります。
- regexp: 値が正規表現の規則に準拠しているかどうかを決定する正規表現演算子。たとえば
select 'abc' regexp '^a';
、返される結果は 1 です。expr または一致条件のいずれかが NULL の場合、結果は NULL になります。 - rlike: 正規表現演算子。値が正規表現の規則に準拠しているかどうかを判断します。例えば
select a from table where b rlike c;
3. 論理演算子
論理演算子は 1、0、または NULL を返します。
- not: 論理否定演算子。指定された値が 0 の場合は 1 を返し、指定された値がゼロ以外の場合は 0 を返し、指定された値が NULL の場合は NULL を返します。たとえば、
select not (1 + 1);
返される結果は 0 です。 - and: 論理 AND 演算子。与えられたすべての値がゼロ以外で、どれも NULL でない
場合は 1 を返し、与えられた 1 つ以上の値が 0 である場合は 0 を返し、それ以外の場合は NULL を返します。 - or: 論理和演算子。指定された値がゼロ以外の値の場合は 1 を返し、両方の値が 0 の場合は 0 を返し、一方の値が 0 でもう一方の値が NULL、または両方の値が NULL の場合は NULL を返します。
- xor: 排他的論理和。指定された値のいずれかが NULL の場合は NULL を返し、NULL
以外の 2 つの値が両方とも 0 であるか 0 に等しくない場合は 0 を返し、一方の値が 0 でもう一方の値が 0 でない場合は 1 を返します。例えばselect a xor b;
4. ビット演算子
ビット演算子は、まずオペランドを 2 進数に変換し、次にビット演算を実行し、最後に計算結果を 2 進数から 10 進数に変換します。
- &: ビット単位の AND 演算子。指定された値に対応する 2 進数に対してビットごとに論理 AND 演算を実行し、値がすべて 1 の場合は 1 を返し、それ以外の場合は 0 を返します。たとえば
select 1 and 10;
、2 進数の 1 は 0001、2 進数の 10 は 1010、結果は 0000、10 進数の結果は 0 になります。 - |: ビットごとの OR 演算子
- ^: ビットごとの XOR 演算子。指定された値に対応する 2 進数に対して論理 XOR 演算をビットごとに実行します。値が異なる場合、ビットは 1 を返し、それ以外の場合は 0 を返します。たとえば
select 1 ^ 10;
、2 進数の結果は 1011、10 進数の結果は 11 になります。 - ~: ビット単位の否定演算子。指定された値の 2 進数がビットごとに反転されます。つまり、1 が 0 に変更され、0 が 1 に変更されます。たとえば
select ~1;
、2 進数の結果は 1110、10 進数の結果は 14 になります。 - >>: ビット単位の右シフト演算子。指定された値の 2 進数のすべてのビットを、指定されたビット数だけ右にシフトします。指定された桁数を右にシフトした後、右側の下位ビットの値がシフトアウトされて破棄され、左側の上位ビットの空き位置は 0 で埋められます。たとえば
select 10 >> 2;
、2 ビット右にシフトすると、2 進数では 0010、10 進数では 2 になります。 - <<: ビット単位の左シフト演算子。指定された値の 2 進数のすべてのビットを、指定されたビット数だけ左にシフトします。指定された桁数を左にシフトした後、左側の上位ビットの値がシフトアウトされて破棄され、右側の下位ビットの空き位置は 0 で埋められます。たとえば
select 10 << 2;
、2 ビットの左シフトの 2 進数の結果は 00101000、10 進数の結果は 40 になります。