名前 | 説明 |
---|---|
ABS() |
絶対値を返します |
ACOS() |
アークコサインを返します |
ASIN() |
アークサインを返します |
ATAN2() 、ATAN() |
2 つの引数のアークタンジェントを返します |
ATAN() |
アークタンジェントを返します |
CEIL() |
引数より小さくない整数値のうち、最小のものを返します |
CEILING() |
引数より小さくない整数値のうち、最小のものを返します |
CONV() |
異なる基数間の数値を変換します |
COS() |
コサインを返します |
COT() |
コタンジェントを返します |
CRC32() (v4.1.0) |
巡回冗長検査値を計算します |
DEGREES() |
ラジアンを度に変換します |
EXP() |
e の引数乗を計算します |
FLOOR() |
引数を超えない整数値のうちで、最大のものを返します |
LN() |
引数の自然対数を返します |
LOG10() |
引数の底 10 の対数を返します |
LOG2() |
引数の底 2 の対数を返します |
LOG() |
第 1 引数の自然対数を返します |
MOD() |
剰余を返します |
OCT() |
10 進数の 8 進表現を返します |
PI() |
pi の値を返します |
POW() |
引数の指定された累乗を返します |
POWER() |
引数の指定された累乗を返します |
RADIANS() |
引数をラジアンに変換したものを返します |
RAND() |
ランダムな浮動小数点値を返します |
ROUND() |
引数を丸めます |
SIGN() |
引数の符号を返します |
SIN() |
引数のサインを返します |
SQRT() |
引数の平方根を返します |
TAN() |
引数のタンジェントを返します |
TRUNCATE() |
小数点以下の桁数が指定された値になるように、切り捨てを行います |
すべての数学関数は、エラーのイベントで
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
CEIL()
は
CEILING()
の同義語です。
X
よりは大きな整数値のうち、最小のものを返します。
mysql>SELECT CEILING(1.23);
-> 2 mysql>SELECT CEILING(-1.23);
-> -1
引数が精密値数値の場合、戻り値の型は精密値数値になります。引数が文字列または浮動小数点の場合、戻り値の型は浮動小数点になります。
異なる基数間の数値を変換します。基数
rom_base
から基数
to_base
に変換された、数値 N
の文字列表現を返します。引数のどれかが
NULL
である場合は
NULL
を返します。引数 N
は整数として解釈されますが、整数または文字列として特定される場合があります。最小限の基数は
2
で、最大の基数は
36
です。to_base
が負数である場合は、N
は符号付き数として登録されます。それ以外では、N
は符号なしとして扱われます。CONV()
は 64 ビット精度で動作します。
mysql>SELECT CONV('a',16,2);
-> '1010' mysql>SELECT CONV('6E',18,8);
-> '172' mysql>SELECT CONV(-17,10,-18);
-> '-H' mysql>SELECT CONV(10+'10'+'10'+0xa,10,10);
-> '40'
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
乗の値を返します。この関数の逆は、LOG()
(引数を 1 つだけ使用するもの) または
LN()
です。
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
引数が精密値数値の場合、戻り値の型は精密値数値になります。引数が文字列または浮動小数点の場合、戻り値の型は浮動小数点になります。
FORMAT(
X
,D
)
数値 X
を「'#,###,###.##
」のような形式にフォーマットして小数第
D
位までに丸め、その結果を文字列として返します。詳細については、項7.4. 「文字列関数」をご参照ください。
この関数を使えば 10 進数または文字列の 16 進表現を取得できますが、その方法は引数の型に応じて異なります。詳細については、項7.4. 「文字列関数」のこの関数の説明を参照してください。
X
の自然対数を返します。これは、X
の底 e
の対数です。X
が 0
に等しいかそれより小さい場合は、NULL
が返されます。
mysql>SELECT LN(2);
-> 0.69314718055995 mysql>SELECT LN(-2);
-> NULL
この関数は
LOG(
と同義です。この関数の逆は、X
)EXP()
関数です。
ひとつのパラメータで呼び出される場合、この関数は
X
の自然対数を返します。X
が 0
に等しいかそれより小さい場合は、NULL
が返されます。
この関数 (引数を 1
つ指定して呼び出した場合)
の逆は、EXP()
関数です。
mysql>SELECT LOG(2);
-> 0.69314718055995 mysql>SELECT LOG(-2);
-> NULL
この関数を 2
つのパラメータを指定して呼び出すと、B
を底とする X
の対数が返されます。X
が 0
と等しいかそれより小さい場合、あるいは
B
が 1
と等しいかそれより小さい場合、NULL
が返されます。
mysql>SELECT LOG(2,65536);
-> 16 mysql>SELECT LOG(10,100);
-> 2 mysql>SELECT LOG(1,100);
-> NULL
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
を返します。
N
の 8
進数の文字列表現を返します。N
は longlong
(BIGINT
)
数字です。これは、CONV(
に等価になります。N
,100.8)N
が
NULL
である場合は
NULL
を返します。
mysql> SELECT OCT(12);
-> '14'
π (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
これは
POW()
の同義語です。
ディグリーからラジアンに変換された引数
X
を返します。(π
ラジアンは 180 度と等価です)。
mysql> SELECT RADIANS(90);
-> 1.5707963267949
0
<=
v
<
1.0
の範囲にあるランダムな浮動小数点値
v
を返します。定数整数引数
N
が指定されている場合は、カラム値の反復可能なシークエンスを生成するシード値として使用されます。次の例では、RAND(3)
から生成される一連の値が、両方の使用場所で同じになっています。
mysql>CREATE TABLE t (i INT);
Query OK, 0 rows affected (0.42 sec) mysql>INSERT INTO t VALUES(1),(2),(3);
Query OK, 3 rows affected (0.00 sec) Records: 3 Duplicates: 0 Warnings: 0 mysql>SELECT i, RAND() FROM t;
+------+------------------+ | i | RAND() | +------+------------------+ | 1 | 0.61914388706828 | | 2 | 0.93845168309142 | | 3 | 0.83482678498591 | +------+------------------+ 3 rows in set (0.00 sec) mysql>SELECT i, RAND(3) FROM t;
+------+------------------+ | i | RAND(3) | +------+------------------+ | 1 | 0.90576975597606 | | 2 | 0.37307905813035 | | 3 | 0.14808605345719 | +------+------------------+ 3 rows in set (0.00 sec) mysql>SELECT i, RAND() FROM t;
+------+------------------+ | i | RAND() | +------+------------------+ | 1 | 0.35877890638893 | | 2 | 0.28941420772058 | | 3 | 0.37073435016976 | +------+------------------+ 3 rows in set (0.00 sec) mysql>SELECT i, RAND(3) FROM t;
+------+------------------+ | i | RAND(3) | +------+------------------+ | 1 | 0.90576975597606 | | 2 | 0.37307905813035 | | 3 | 0.14808605345719 | +------+------------------+ 3 rows in set (0.01 sec)
定数イニシャライザを使用すれば、シードは実行の前の、ステートメントがコンパイルされる際に一度初期化されます。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));
WHERE
節内の
RAND()
は、WHERE
が実行されるたびに再評価されますのでご注意ください。
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;
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 進数と想定) と同じ型です。つまり、整数引数では、次のように結果が整数 (小数点なし) になります。
mysql> SELECT ROUND(150.000,2), ROUND(150,2);
+------------------+--------------+
| ROUND(150.000,2) | ROUND(150,2) | +------------------+--------------+ |
150.00 | 150 | +------------------+--------------+
ROUND()
では、第 1
引数の型に応じて次の規則が使用されます。
高精度値数に対して、ROUND()
は 「四捨」「五入」
規則を行使します : .5
以上の小数部を持つ値は、正数である場合は次の整数に切り上げられ、負数である場合は切り下げられます。(つまりゼロから切り遠ざけられる)
。0.5
未満の小数部を持つ値は、正数である場合は次の整数に切り下げられ、負数である場合は切り上げられます。
近似値の数に対する結果は C
ライブラリによって異なります。多くのシステムはで、これはつまり
ROUND()
は " もっとも近い偶数に丸める "
規則を使用しているということになります
:
なんらかの小数部を持つ値はもっとも近い偶数の整数に丸められます。
以下の例は、正確な値の丸めと近似値の丸めの違いを示しています。
mysql> SELECT ROUND(2.5), ROUND(25E-1);
+------------+--------------+
| ROUND(2.5) | ROUND(25E-1) | +------------+--------------+ | 3 |
2 | +------------+--------------+
詳細は 項7.14. 「高精度計算」 をご覧ください。
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
すべての数字はゼロに向かって丸められます。