サーチ…
備考
MySQLは、ほとんどのマシンで、計算に64ビットIEEE 754浮動小数点演算を使用します。
整数コンテキストでは、整数演算を使用します。
-
RAND()
は完全な乱数ジェネレータではありません。主に擬似乱数を素早く生成するために使用されます
算術演算子
MySQLは次の算術演算子を提供します
オペレーター | 名 | 例 |
---|---|---|
+ | 添加 | SELECT 3+5; →8 SELECT 3.5+2.5; - > 6.0 SELECT 3.5+2; →5.5 |
- | 減算 | SELECT 3-5; →-2 |
* | 乗算 | SELECT 3 * 5; - > 15 |
/ | 分割 | SELECT 20 / 4; →5 SELECT 355 / 113; - > 3.1416 SELECT 10.0 / 0; - > NULL |
DIV | 整数部 | SELECT 5 DIV 2; →2 |
% またはMOD | モジュロ | SELECT 7 % 3; - > 1 SELECT 15 MOD 4 - > 3 SELECT 15 MOD -4 - > 3 SELECT -15 MOD 4 - > -3 SELECT -15 MOD -4 - > -3 SELECT 3 MOD 2.5 - > 0.5 |
BIGINT
算術演算の数値がすべて整数の場合、MySQLはBIGINT
(符号付き64ビット)整数データ型を使用して処理を行います。例えば:
select (1024 * 1024 * 1024 * 1024 *1024 * 1024) + 1
1,152,921,504,606,846,977を選択します
そして
select (1024 * 1024 * 1024 * 1024 *1024 * 1024 * 1024
→ BIGINT
範囲外エラー
ダブル
算術演算の数値が小数点以下の場合、MySQLは64ビットIEEE 754浮動小数点演算を使用します。多くの浮動小数点数は本質的に正確な値ではなく近似値なので、浮動小数点演算を使用するときは注意が必要です 。
数学定数
Pi
次の例は、 PI
の値を小数点以下6桁に戻します。実際の値はDOUBLE
適しています。
SELECT PI(); -> 3.141593
三角法(SIN、COS)
角度は、度ではなくラジアンです。すべての計算は、 IEEE 754 64ビット浮動小数点で行われます。すべての浮動小数点計算は機械誤差(ε)と呼ばれる小さな誤差の影響を受けますので、それらを等価で比較しようとしないでください。浮動小数点使用時にこれらのエラーを回避する方法はありません。彼らは技術に組み込まれています。
DECIMAL
値を三角計算で使用すると、暗黙的に浮動小数点に変換された後、小数点に戻ります。
正弦
ラジアンで表される数Xの正弦を返します。
SELECT SIN(PI()); -> 1.2246063538224e-16
余弦
Xがラジアンで与えられたときのXの余弦を返す
SELECT COS(PI()); -> -1
正接
ラジアンで表される数Xの正接を返します。結果はゼロに非常に近いが、正確にゼロではないことに注意してください。これはマシンεの例です。
SELECT TAN(PI()); -> -1.2246063538224e-16
アークコサイン(逆コサイン)
Xが範囲内であればXのアークコサインを返し-1 to 1
SELECT ACOS(1); -> 0
SELECT ACOS(1.01); -> NULL
アークサイン(逆サイン)
Xが-1 to 1
範囲にある場合、Xの逆正弦を返します。
SELECT ASIN(0.2); -> 0.20135792079033
アークタンジェント(逆タンジェント)
ATAN(x)
は、単一の数値の逆正接を返します。
SELECT ATAN(2); -> 1.1071487177941
ATAN2(X, Y)
は、2つの変数XとYのアークタンジェントを返します.Y / Xのアークタンジェントを計算するのと似ていますが、数値的には頑強ですATAN2(X, Y)
がゼロに近く、の両方の引数を使用して、結果の象限を決定します。
可能な限り、 ATAN()
ではなくATAN2()
を使用する式を作成することをおATAN2()
します。
ATAN2(1,1); -> 0.7853981633974483 (45 degrees)
ATAN2(1,-1); -> 2.356194490192345 (135 degrees)
ATAN2(0, -1); -> PI (180 degrees) don't try ATAN(-1 / 0)... it won't work
コタンジェント
Xのコタンジェントを返します。
SELECT COT(12); -> -1.5726734063977
変換
SELECT RADIANS(90) -> 1.5707963267948966
SELECT SIN(RADIANS(90)) -> 1
SELECT DEGREES(1), DEGREES(PI()) -> 57.29577951308232, 180
丸め(ROUND、FLOOR、CEIL)
10進数を整数値に丸めます。
正確な数値(例えばDECIMAL
)の場合:数値の最初の小数点が5以上の場合、この関数は数値を0から離れた次の整数に丸めます 。その小数点以下の桁数が4以下の場合、この関数はゼロに最も近い次の整数値に丸めます 。
SELECT ROUND(4.51) -> 5
SELECT ROUND(4.49) -> 4
SELECT ROUND(-4.51) -> -5
近似数値(例: DOUBLE
)の場合: ROUND()
関数の結果はCライブラリーによって異なります。多くのシステムでは、これはROUND()
が最も近い偶数のルールへのラウンドを使用することを意味します。
SELECT ROUND(45e-1) -> 4 -- The nearest even value is 4
SELECT ROUND(55e-1) -> 6 -- The nearest even value is 6
番号を切り上げる
数値をCEIL()
は、 CEIL()
またはCEILING()
関数を使用します
SELECT CEIL(1.23) -> 2
SELECT CEILING(4.83) -> 5
数字を切り捨てる
数値をFLOOR()
には、 FLOOR()
関数を使用します
SELECT FLOOR(1.99) -> 1
フロアとCEILは、 - 無限に近づく/離れる:
SELECT FLOOR(-1.01), CEIL(-1.01) -> -2 and -1
SELECT FLOOR(-1.99), CEIL(-1.99) -> -2 and -1
10進数を小数点以下の桁数に丸めます。
SELECT ROUND(1234.987, 2) -> 1234.99
SELECT ROUND(1234.987, -2) -> 1200
上向きと下向きの議論と「5」も適用されます。
数字をパワー(POW)に上げる
数値x
をy
にするには、 POW()
POWER()
関数またはPOWER()
関数を使用します
SELECT POW(2,2); => 4
SELECT POW(4,2); => 16
平方根(SQRT)
SQRT()
関数を使用します。数値が負の場合はNULL
がNULL
SELECT SQRT(16); -> 4
SELECT SQRT(-3); -> NULL
乱数(RAND)
乱数を生成する
0
と1
間の擬似乱数浮動小数点数を生成するには、 RAND()
関数を使用します
次のクエリがあるとします
SELECT i, RAND() FROM t;
これは次のようなものを返します
私 | RAND() |
---|---|
1 | 0.6191438870682 |
2 | 0.93845168309142 |
3 | 0.83482678498591 |
範囲内の乱数
a <= n <= bの範囲の乱数を生成するには、次の式を使用できます
FLOOR(a + RAND() * (b - a + 1))
たとえば、これは7と12の間の乱数を生成します
SELECT FLOOR(7 + (RAND() * 6));
テーブル内の行をランダムに返す簡単な方法は次のとおりです。
SELECT * FROM tbl ORDER BY RAND();
これらは擬似乱数です。
MySQLの擬似乱数生成器は、暗号的に安全ではありません。つまり、MySQLを使用して秘密として使用する乱数を生成すると、MySQLを使用していることを知っている決定的な敵は、信じるよりも簡単に秘密を推測することができます。
絶対値と符号(ABS、SIGN)
数値の絶対値を返す
SELECT ABS(2); -> 2
SELECT ABS(-46); -> 46
数字のsign
は0と比較されます。
符号 | 結果 | 例 |
---|---|---|
-1 | n <0 | SELECT SIGN(42); - > 1 |
0 | n = 0 | SELECT SIGN(0); →0 |
1 | n> 0 | SELECT SIGN(-3); - > -1 |
SELECT SIGN(-423421); -> -1