すべての数学関数は、エラーのイベントで
NULL
を戻します。
X
の絶対値を戻します。
mysql>SELECT ABS(2);
-> 2 mysql>SELECT ABS(-32);
-> 32
この関数は、BIGINT
値とも安全に使用できます。
X
のアーク
コサインを戻します。これは、コサインが
X
であるものの値です。X
が -1
から 1
の範囲にない場合は NULL
を戻します。
mysql>SELECT ACOS(1);
-> 0 mysql>SELECT ACOS(1.0001);
-> NULL mysql>SELECT ACOS(0);
-> 1.5707963267949
X
のアーク
サインを戻します。これは、サインが
X
であるものの値です。X
が -1
から 1
の範囲にない場合は NULL
を戻します。
mysql>SELECT ASIN(0.2);
-> 0.20135792079033 mysql>SELECT ASIN('foo');
+-------------+ | ASIN('foo') | +-------------+ | 0 | +-------------+ 1 row in set, 1 warning (0.00 sec) mysql>SHOW WARNINGS;
+---------+------+-----------------------------------------+ | Level | Code | Message | +---------+------+-----------------------------------------+ | Warning | 1292 | Truncated incorrect DOUBLE value: 'foo' | +---------+------+-----------------------------------------+
X
のアーク
タンジェントを戻します。これは、タンジェントが
X
であるものの値です。
mysql>SELECT ATAN(2);
-> 1.1071487177941 mysql>SELECT ATAN(-2);
-> -1.1071487177941
ふたつの変数 X
および
Y
のアーク
タンジェントを戻します。これは、両方の引数の符号が結果の象限の判定に使用される以外は、
のアーク
タンジェントの計算に類似しています。
Y
/ X
mysql>SELECT ATAN(-2,2);
-> -0.78539816339745 mysql>SELECT ATAN2(PI(),0);
-> 1.5707963267949
X
よりは大きな整数値のうち、最小のものを戻します。
mysql>SELECT CEILING(1.23);
-> 2 mysql>SELECT CEIL(-1.23);
-> -1
これらのふたつの関数は同義です。戻り値は
BIGINT
に変換されますのでご注意ください。
X
のコサインを戻します。X
はラジアンで与えられています。
mysql> SELECT COS(PI());
-> -1
X
のコタンジェントを戻します。
mysql>SELECT COT(12);
-> -1.5726734063977 mysql>SELECT COT(0);
-> NULL
巡回符合検査値を算定し、32
ビットの符号のない値を戻します。引数が
NULL
である場合、結果は
NULL
になります。引数はストリングになると想定され、そしてストリングでない場合でも、
( 可能であれば )
ストリングとして扱われます。
mysql>SELECT CRC32('MySQL');
-> 3259397556 mysql>SELECT CRC32('mysql');
-> 2501908538
ラジアンからティグリーに変換された引数
X
を戻します。
mysql>SELECT DEGREES(PI());
-> 180 mysql>SELECT DEGREES(PI() / 2);
-> 90
e ( 自然対数の底 ) の
X
乗の値を戻します。
mysql>SELECT EXP(2);
-> 7.3890560989307 mysql>SELECT EXP(-2);
-> 0.13533528323661 mysql>SELECT EXP(0);
-> 1
X
よりは小さな整数値のうち、最大のものを戻します。
mysql>SELECT FLOOR(1.23);
-> 1 mysql>SELECT FLOOR(-1.23);
-> -2
戻り値は BIGINT
に変換されますのでご注意ください。
FORMAT(
X
,D
)
数字 X
を
'#,###,###.##'
のようにフォーマットし、D
少数位まで丸め、その結果をストリングとして戻します。詳細は、項11.3. 「文字列関数」
をご覧ください。
X
の自然対数を戻します。これは、X
の底 e の対数です。
mysql>SELECT LN(2);
-> 0.69314718055995 mysql>SELECT LN(-2);
-> NULL
この関数は
LOG(
と同義です。
X
)
ひとつのパラメータで呼び出される場合、この関数は
X
の自然対数を戻します。
mysql>SELECT LOG(2);
-> 0.69314718055995 mysql>SELECT LOG(-2);
-> NULL
ふたつのパラメータで呼び出される場合、この関数は任意のベース
B
に対して
X
の自然対数を戻します。
mysql>SELECT LOG(2,65536);
-> 16 mysql>SELECT LOG(10,100);
-> 2
LOG(
は B
,X
)LOG(
に等価です。
X
) /
LOG(B
)
のベース
2 の対数を戻します。
X
mysql>SELECT LOG2(65536);
-> 16 mysql>SELECT LOG2(-100);
-> NULL
LOG2()
は、保存のために数字が何ビットを必要とするか調べるのに便利です。この関数は式
LOG(
と同義です。
X
) /
LOG(2)
X
のベース 10
の対数を戻します。
mysql>SELECT LOG10(2);
-> 0.30102999566398 mysql>SELECT LOG10(100);
-> 2 mysql>SELECT LOG10(-100);
-> NULL
LOG10(
は
X
)LOG(10,
と等価です。
X
)
モジュロ演算。M
によって除算された N
の余りを戻します。
mysql>SELECT MOD(234, 10);
-> 4 mysql>SELECT 253 % 7;
-> 1 mysql>SELECT MOD(29,9);
-> 2 mysql>SELECT 29 MOD 9;
-> 2
この関数は、BIGINT
値とも安全に使用できます。
MOD()
はまた、小数部を持つ値にも利用でき、除算の後に正確な余りを戻します。
mysql> SELECT MOD(34.5,3);
-> 1.5
MOD(
は
N
,0)NULL
を戻します。
π ( pi ) の値を戻します。表示されるデフォルトの少数点以下の桁数は 7 ですが、MySQL は内部的に全倍精度値を使用します。
mysql>SELECT PI();
-> 3.141593 mysql>SELECT PI()+0.000000000000000000;
-> 3.141592653589793116
X
の
Y
乗の値を戻します。
mysql>SELECT POW(2,2);
-> 4 mysql>SELECT POW(2,-2);
-> 0.25
ディグリーからラジアンに変換された引数
X
を戻します。( π
ラジアンは 100 ディグリーと等価です ) 。
mysql> SELECT RADIANS(90);
-> 1.5707963267949
0
<= v
<
1.0
の範囲にあるランダムな浮動小数点値
v
を戻します。定数整数引数
N
が指定されている場合は、カラム値の反復可能なシークエンスを生成するシード値として使用されます。
mysql>SELECT RAND();
-> 0.9233482386203 mysql>SELECT RAND(20);
-> 0.15888261251047 mysql>SELECT RAND(20);
-> 0.15888261251047 mysql>SELECT RAND();
-> 0.63553050033332 mysql>SELECT RAND();
-> 0.70100469486881 mysql>SELECT RAND(20);
-> 0.15888261251047
定数イニシャライザを使用すれば、シードは実行の前の、ステートメントがコンパイルされる際に一度初期化されます。MySQL
5.1.16 からは、非定数イニシャライザ (
カラム名など )
が引数として使用される場合は、シードは
RAND()
の各呼び出しの値で初期化されます。(
これは、等価の引数値に対しては、RAND()
は毎回同じ値を戻すということを示しています
) 。MySQL 5.1.3 から 5.1.15
では、非定数引数は許可されていません。それ以前では、非定数引数の使用の効果は未定義になっています。
i
<=
R
<
j
の範囲のランダムな整数
R
を取得するには、式
FLOOR(
を使用します。例えば、i
+ RAND() *
(j
–
i
)7
<=
R
< 12
の範囲にあるランダムな整数を得るには、次のステートメントを使うことができます
:
SELECT FLOOR(7 + (RAND() * 5));
ORDER BY
はカラムを複数回評価するため、ORDER
BY
句内で RAND()
値を持つカラムを使用することはできません。しかし、次のように行を順不同に摘出することは可能です
:
mysql> SELECT * FROM tbl_name
ORDER BY RAND();
LIMIT
と結合された ORDER
BY RAND()
は、行のセットからランダムなサンプルを選ぶ場合に便利です
:
mysql>SELECT * FROM table1, table2 WHERE a=b AND c<d
->ORDER BY RAND() LIMIT 1000;
WHERE
句内の RAND()
は、WHERE
が実行されるたびに再評価されますのでご注意ください。
RAND()
は完璧なランダム発生器というわけではありませんが、同じ
MySQL
バージョンのプラットフォーム間においてポータブルな
ad hoc
ランダム数を生成する最も速い方法です。
引数 X
を
D
小数点に丸めます。丸めアルゴリズムは
X
のデータタイプに基づきます。D
は特別に指定されない限り、デフォルトにより
0 になります。D
は時に負数で、値 X
の小数点左側の D
桁がゼロになる原因になる場合があります。
mysql>SELECT ROUND(-1.23);
-> -1 mysql>SELECT ROUND(-1.58);
-> -2 mysql>SELECT ROUND(1.58);
-> 2 mysql>SELECT ROUND(1.298, 1);
-> 1.3 mysql>SELECT ROUND(1.298, 0);
-> 1 mysql>SELECT ROUND(23.298, -1);
-> 20
出力型は最初の引数 ( 整数、重複、または 10 進数と想定 ) と同じタイプです。つまり、整数引数では、結果は整数 ( 小数点なし ) になるということになります。
ROUND()
は、最初の引数が 10
進値である時、高精度値引数に対して精度算数ライブラリを使用します
:
高精度値数に対して、ROUND()
は 「四捨五入」
ルールを行使します : .5
以上の小数部を持つ値は、正数である場合は次の整数に切り上げられ、負数である場合は切り下げられます。(
つまりゼロから切り遠ざけられる ) 。0.5
未満の小数部を持つ値は、正数である場合は次の整数に切り下げられ、負数である場合は切り上げられます。
近似数値では、結果は C
ライブラリによります。多くのシステムはで、これはつまり
ROUND()
は "
最も近い偶数に丸める "
ルールを使用しているということになります
:
なんらかの小数部を持つ値は最も近い偶数の整数に丸められます。
次の例は高精度値と近似値で、丸め方がどう異なるかを示しています :
mysql> SELECT ROUND(2.5), ROUND(25E-1);
+------------+--------------+
| ROUND(2.5) | ROUND(25E-1) |
+------------+--------------+
| 3 | 2 |
+------------+--------------+
詳細は 章 22. 精密計算 をご覧ください。
X
が負数か、ゼロか、または正数かによって、引数の符号を
-1
、0
、もしくは 1
として戻します。
mysql>SELECT SIGN(-32);
-> -1 mysql>SELECT SIGN(0);
-> 0 mysql>SELECT SIGN(234);
-> 1
X
のサインを戻します。X
はラジアンで与えられています。
mysql>SELECT SIN(PI());
-> 1.2246063538224e-16 mysql>SELECT ROUND(SIN(PI()));
-> 0
非負数 X
の平方根を戻します。
mysql>SELECT SQRT(4);
-> 2 mysql>SELECT SQRT(20);
-> 4.4721359549996 mysql>SELECT SQRT(-16);
-> NULL
X
のタンジェントを戻します。X
はラジアンで与えられています。
mysql>SELECT TAN(PI());
-> -1.2246063538224e-16 mysql>SELECT TAN(PI()+1);
-> 1.5574077246549
D
小数点を切り捨てて、数字
X
を戻します。D
が
0
の場合、結果は小数点または小数部を持ちません。D
は時に負数で、値 X
の小数点左側の D
桁がゼロになる原因になる場合があります。
mysql>SELECT TRUNCATE(1.223,1);
-> 1.2 mysql>SELECT TRUNCATE(1.999,1);
-> 1.9 mysql>SELECT TRUNCATE(1.999,0);
-> 1 mysql>SELECT TRUNCATE(-1.999,1);
-> -1.9 mysql>SELECT TRUNCATE(122,-2);
-> 100 mysql>SELECT TRUNCATE(10.28*100,0);
-> 1028
すべての数字はゼロに向かって丸められます。