通常の算術演算子を利用することができます。結果の制度は次のルールに従って判断されます :
-
、+
、および
*
の場合、両方の引数が整数であれば、結果はBIGINT
( 64 ビット )
の精度で計算されますのでご注意ください。
引数のひとつが符号のない整数であり、もう一方の引数も整数である場合は、結果は符号なしの整数になります。
+
、-
、/
、*
、%
オペランドのいずれかが実数またはストリング値であれば、結果の精度は最大精度を持つ引数の精度になります。
乗算および除算では、ふたつの高精度値を使用する場合の結果の精度は、最初の引数の精度と、div_precision_increment
グローバル変数の値を足したものになります。例えば、式
5.05 / 0.0014
は小数点以下 6
桁の精度 ( 3607.142857
)
を持ちます。
これらのルールは各演算に適用され、入れ子算は各コンポーネントの精度を示唆します。したがって、(14620
/ 9432456) / (24250 / 9432456)
はまず
(0.0014) / (0.0026)
に解析され、最終的に結果は小数点以下 8 桁 (
0.57692308
) になります。
これらの適用ルールと方法のため、計算のコンポーネントとサブコンポーネントが適切なレベルの精度を用いるよう注意してください。詳細は 項11.8. 「キャスト関数と演算子」 を参照してください。
加算 :
mysql> SELECT 3+5;
-> 8
減算 :
mysql> SELECT 3-5;
-> -2
単項マイナス。この演算子は引数の符号を変更します。
mysql> SELECT - 2;
-> -2
注記 :この演算子が
BIGINT
と使用される場合は、戻り値も
BIGINT
になります。そのため、–263
の値を持つ可能性のある整数に
–
を使用するのは避けてください。
乗算 :
mysql>SELECT 3*5;
-> 15 mysql>SELECT 18014398509481984*18014398509481984.0;
-> 324518553658426726783156020576256.0 mysql>SELECT 18014398509481984*18014398509481984;
-> 0
整数の乗算の結果は BIGINT
計算の 64
ビット範囲を越えるため、最後の式の結果は正しくありません。(
項10.2. 「数値タイプ」 参照 )
除算 :
mysql> SELECT 3/5;
-> 0.60
ゼロによる除算は NULL
の結果を生成します :
mysql> SELECT 102/(1-1);
-> NULL
結果が整数に返還される状況下では、除算は
BIGINT
算術でのみ計算されます。
整数除算。FLOOR()
に類似していますが、BIGINT
値でも安全です。
mysql> SELECT 5 DIV 2;
-> 2
モジュロ演算。M
によって除算された N
の余りを戻します。詳細は、項11.4.2. 「数学関数」
の MOD()
に関する説明をご覧ください。