通常の算術演算子を利用することができます。その結果は次の規則に従って決定されます。
-
、+
、および
*
の場合、両方の引数が整数であれば、結果は
BIGINT
(64
ビット) の精度で計算されます。
引数のひとつが符号のない整数であり、もう一方の引数も整数である場合は、結果は符号なしの整数になります。
+
、-
、/
、*
、%
オペランドのいずれかが実数または文字列値であれば、結果の精度は最大精度を持つ引数の精度になります。
/
で実行される除算の場合、2
つの精密値を使用した場合の結果のスケールは、第
1 引数のスケールに
div_precision_increment
システム変数の値 (デフォルトでは 4)
を足したものとなります。たとえば、式
5.05 / 0.014
の結果のスケールは、小数点以下 6
桁になります
(360.714286
)。
これらの規則は各演算に適用され、入れ子算は各コンポーネントの精度を示唆します。したがって、(14620
/ 9432456) / (24250 / 9432456)
はまず
(0.0014) / (0.0026)
に解析され、最終的に結果は小数点以下 8 桁
(0.60288653
)
になります。
これらの適用規則と方法のため、計算のコンポーネントとサブコンポーネントが適切なレベルの精度を用いるよう注意してください。項7.9. 「キャスト関数と演算子」 を参照してください。
加算 :
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
ビット範囲を越えるため、最後の式の結果は正しくありません。詳細は、項6.2. 「数値型」
を参照してください。
除算 :
mysql> SELECT 3/5;
-> 0.60
ゼロによる除算は
NULL
の結果を生成します :
mysql> SELECT 102/(1-1);
-> NULL
結果が整数に返還される状況下では、除算は
BIGINT
算術でのみ計算されます。
整数除算。FLOOR()
に類似していますが、BIGINT
値でも安全です。BIGINT
の範囲を超えた非整数オペランドでは、正しくない結果が発生する可能性があります。
mysql> SELECT 5 DIV 2;
-> 2
モジュロ演算。M
によって除算された N
の余りを返します。詳細は、項7.5.2. 「数学関数」
の MOD()
に関する説明をご覧ください。