すべての数学関数はエラーの場合
NULL
を返します。
-
単項マイナス。引数の符号を変更する。
mysql> SELECT - 2;
-> -2
注意: BIGINT
型の値に対してこの演算子を使用すると、戻り値は
BIGINT
になる。したがって、値が
-2^63
になる可能性がある整数に対しては
-
の使用を避ける。
ABS(X)
X
の絶対値を返す。
mysql>SELECT ABS(2);
-> 2 mysql>SELECT ABS(-32);
-> 32
この関数は BIGINT
型の値に対して使用しても問題ない。
ACOS(X)
X
のアークコサイン(つまり、コサインが
X
である値)を返す。X
が
-1
から 1
の範囲にないときは NULL
を返す。
mysql>SELECT ACOS(1);
-> 0.000000 mysql>SELECT ACOS(1.0001);
-> NULL mysql>SELECT ACOS(0);
-> 1.570796
ASIN(X)
X
のアークサイン(つまり、サインが
X
である値)を返す。X
が
-1
〜 1
の範囲にないときは NULL
を返す。
mysql>SELECT ASIN(0.2);
-> 0.201358 mysql>SELECT ASIN('foo');
-> 0.000000
ATAN(X)
X
のアークタンジェント(つまり、タンジェントが
X
である値)を返す。
mysql>SELECT ATAN(2);
-> 1.107149 mysql>SELECT ATAN(-2);
-> -1.107149
ATAN(Y,X)
,
ATAN2(Y,X)
2 つの変数 X
と
Y
のアークタンジェントを返す。これは
Y / X
によるアークタンジェントの計算と似ているが、異なる点として、この場合、両方の引数の符号に基づいて結果の四分円が決定される。
mysql>SELECT ATAN(-2,2);
-> -0.785398 mysql>SELECT ATAN2(PI(),0);
-> 1.570796
CEILING(X)
, CEIL(X)
X
以上の最も小さい整数値を返す。
mysql>SELECT CEILING(1.23);
-> 2 mysql>SELECT CEIL(-1.23);
-> -1
CEIL()
エイリアスはバージョン 4.0.6
で追加された。
注意: 戻り値は BIGINT
に変換される。
COS(X)
X
(ラジアン)のコサインを返す。
mysql> SELECT COS(PI());
-> -1.000000
COT(X)
X
のコタンジェントを返す。
mysql>SELECT COT(12);
-> -1.57267341 mysql>SELECT COT(0);
-> NULL
CRC32(expr)
巡回冗長検査値を計算し、32
ビットの符号なしの値を返す。 引数が
NULL
の場合、結果は
NULL
になる。引数では、文字列の指定が前提となる。文字列以外の値を指定しても、文字列として扱われる。
mysql> SELECT CRC32('MySQL');
-> 3259397556
CRC32()
は MySQL 4.1.0
以降で利用できる。
DEGREES(X)
引数 X
をラジアンから度に変換して返す。
mysql> SELECT DEGREES(PI());
-> 180.000000
整数の除算。 FLOOR()
と同様。ただし、BIGINT
型の値に対応している。
mysql> SELECT 5 DIV 2
-> 2
DIV
は MySQL 4.1.0 の新機能。
EXP(X)
e
(自然対数の底)を
X
乗した値を返す。
mysql>SELECT EXP(2);
-> 7.389056 mysql>SELECT EXP(-2);
-> 0.135335
FLOOR(X)
X
以下の最も大きい整数値を返す。
mysql>SELECT FLOOR(1.23);
-> 1 mysql>SELECT FLOOR(-1.23);
-> -2
注意: 戻り値は BIGINT
に変換される。
GREATEST(X,Y,...)
最も大きい(つまり、最も大きい値を指定された)引数を返す。
各引数の比較は LEAST
の場合と同じ規則に基づいて行われる。
mysql>SELECT GREATEST(2,0);
-> 2 mysql>SELECT GREATEST(34.0,3.0,5.0,767.0);
-> 767.0 mysql>SELECT GREATEST("B","A","C");
-> "C"
バージョン 3.22.5 より前の MySQL
では、GREATEST
の代わりに
MAX()
を使用できる。
LEAST(X,Y,...)
指定された 2 つ以上の引数の中で、最も小さい(つまり、最も小さい値を指定された)引数を返す。 各引数の比較は、次の規則に基づいて行われる。
戻り値が INTEGER
のコンテキストで使用される場合、またはすべての引数に整数値が指定されている場合は、各引数は整数として比較される。
戻り値が REAL
のコンテキストで使用される場合、またはすべての引数に実数が指定されている場合は、各引数は実数として比較される。
いずれかの引数がケース依存文字列である場合は、各引数はケース依存文字列として比較される。
その他の場合、引数はケース非依存文字列として比較される。
mysql>SELECT LEAST(2,0);
-> 0 mysql>SELECT LEAST(34.0,3.0,5.0,767.0);
-> 3.0 mysql>SELECT LEAST("B","A","C");
-> "A"
バージョン 3.22.5 より前の MySQL
では、LEAST
の代わりに
MIN()
を使用できる。
LN(X)
X
の自然対数を返す。
mysql>SELECT LN(2);
-> 0.693147 mysql>SELECT LN(-2);
-> NULL
この関数は MySQL バージョン 4.0.3
で追加された。 MySQL における
LOG(X)
のシノニム。
LOG(X)
, LOG(B,X)
パラメータ 1
つで呼び出された場合、この関数は
X
の自然対数を返す。
mysql>SELECT LOG(2);
-> 0.693147 mysql>SELECT LOG(-2);
-> NULL
パラメータ 2
つで呼び出された場合、この関数は任意の底
B
に対する X
の自然対数を返す。
mysql>SELECT LOG(2,65536);
-> 16.000000 mysql>SELECT LOG(1,100);
-> NULL
任意の底を指定できるオプションは MySQL
バージョン 4.0.3 で追加された。
LOG(B,X)
は
LOG(X)/LOG(B)
と同じ。
LOG2(X)
2 を底とする X
の自然対数を返す。
mysql>SELECT LOG2(65536);
-> 16.000000 mysql>SELECT LOG2(-100);
-> NULL
LOG2()
は、特定の数値の格納に何ビット必要か調べるのに役立つ。
この関数は MySQL バージョン 4.0.3
で追加された。
それより前のバージョンでは、代わりに
LOG(X)/LOG(2)
を使用できる。
LOG10(X)
10 を底とする X
の自然対数を返す。
mysql>SELECT LOG10(2);
-> 0.301030 mysql>SELECT LOG10(100);
-> 2.000000 mysql>SELECT LOG10(-100);
-> NULL
MOD(N,M)
, %
モジュロ(C の %
演算子に類する)。 N
を
M
で割ったときの余りを返す。
mysql>SELECT MOD(234, 10);
-> 4 mysql>SELECT 253 % 7;
-> 1 mysql>SELECT MOD(29,9);
-> 2 mysql>SELECT 29 MOD 9;
-> 2
この関数は BIGINT
型の値に使用しても問題ない。 最後の例は
MySQL 4.1 でのみ有効。
PI()
π の値を返す。小数部の表示桁数はデフォルトで 5 桁だが、MySQL の内部では、π に完全な倍精度が使用される。
mysql>SELECT PI();
-> 3.141593 mysql>SELECT PI()+0.000000000000000000;
-> 3.141592653589793116
POW(X,Y)
,
POWER(X,Y)
X
を Y
乗した値を返す。
mysql>SELECT POW(2,2);
-> 4.000000 mysql>SELECT POW(2,-2);
-> 0.250000
RADIANS(X)
引数 X
を度からラジアンに変換して返す。
mysql> SELECT RADIANS(90);
-> 1.570796
RAND()
, RAND(N)
0
〜 1.0
の範囲のランダムな浮動小数点数を返す。
整数の引数 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
ORDER BY
節ではカラムが複数回評価されるため、RAND()
の値を含むカラムは、ORDER BY
節では使用できない。 しかし、バージョン
3.23 以降では、SELECT * FROM table_name
ORDER BY RAND()
を使用できる。
これは、SELECT * FROM table1,table2 WHERE a=b
AND c<d ORDER BY RAND() LIMIT 1000
のセットからランダムなサンプルを得るのに役立つ。
注意: WHERE
節の
RAND()
は、WHERE
が実行されるたびに再評価される。
RAND()
は完全な乱数ジェネレータではなく、むしろ同じ
MySQL
バージョンのプラットフォーム間で移植可能な乱数を随時、すばやく生成するための方法として利用できる。
ROUND(X)
,
ROUND(X,D)
引数 X
を最も近い整数に丸めた値を返す。 引数が
2 つの形式では、小数部の桁数を
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
注意: 引数の値が 2
つの整数の中間にある場合の
ROUND()
の動作は、C
ライブラリの実装に応じて決まる。実装に応じて、最も近い偶数に丸められる場合と、常に切り上げまたは切り下げられる場合、あるいは常にゼロ方向に丸められる場合がある。特定の丸め方法を必要とする場合は、この関数ではなく、TRUNCATE()
や FLOOR()
などの明確に定義された関数を使用するようにする。
SIGN(X)
X
が負数か、ゼロか、正数かに応じて、この引数の符号を
-1
、0
、または
1
として返す。
mysql>SELECT SIGN(-32);
-> -1 mysql>SELECT SIGN(0);
-> 0 mysql>SELECT SIGN(234);
-> 1
SIN(X)
X
(ラジアン)のサインを返す。
mysql> SELECT SIN(PI());
-> 0.000000
SQRT(X)
X
の負数でない平方根を返す。
mysql>SELECT SQRT(4);
-> 2.000000 mysql>SELECT SQRT(20);
-> 4.472136
TAN(X)
X
(ラジアン)のタンジェントを返す。
mysql> SELECT TAN(PI()+1);
-> 1.557408
TRUNCATE(X,D)
数値 X
の小数部を
D
に指定された桁数に切り捨てた値を返す。D
が 0
の場合、結果の値は小数点も小数部も持たない。
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 3.23.51 以降、すべての数値はゼロ方向に丸められる。
D
が負数の場合、その数値の小数部以外の部分もゼロになる。
mysql> SELECT TRUNCATE(122,-2);
-> 100
注意: 小数は通常、正確な数値としてではなく、倍精度の値としてコンピュータに格納されるため、次のようなおかしな結果が出ることがある。
mysql> SELECT TRUNCATE(10.28*100,0);
-> 1027
これは、10.28 が実際には 10.2799999999999999 のような値として格納されることによって発生する。
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.