Mysqlノート3の数学関数

6886 ワード

Mysqlノート3の数学関数
数学関数は主に数値データを処理する.主に絶対値関数,三角関数,対数関数,乱数関数がある.エラーが発生すると、数学関数は空の値NULLを返します.
1.絶対値関数ABS(x)と戻り円周率関数PI()
mysql> SELECT ABS(2),ABS(-3.3),ABS(-33);
+--------+-----------+----------+
| ABS(2) | ABS(-3.3) | ABS(-33) |
+--------+-----------+----------+
|      2 |       3.3 |       33 |
+--------+-----------+----------+
1 row in set (0.07 sec)

mysql> SELECT pi();
+----------+
| pi()     |
+----------+
| 3.141593 |
+----------+
1 row in set (0.00 sec)

まとめ:pi()は7ビット有効数字を保持
2.平方根関数SQRT(x)と余剰関数MOD(x,y)を求める
mysql> SELECT SQRT(9),SQRT(40),SQRT(-49);
+---------+-----------------+-----------+
| SQRT(9) | SQRT(40)        | SQRT(-49) |
+---------+-----------------+-----------+
|       3 | 6.3245553203368 |      NULL |
+---------+-----------------+-----------+
1 row in set (0.00 sec)

まとめ:負数に平方根がないため-49はNULLを返します
mysql> SELECT MOD(31,8),MOD(234,10),MOD(45.5,6);
+-----------+-------------+-------------+
| MOD(31,8) | MOD(234,10) | MOD(45.5,6) |
+-----------+-------------+-------------+
|         7 |           4 |         3.5 |
+-----------+-------------+-------------+
1 row in set (0.00 sec)

まとめ:MOD(x,y)はxがyで除算された剰余を返し、MOD()は小数点以下の数値にも作用する
3.整数の関数CEIL(x)、CEILING(x)、FLOOR(x)を取得する
mysql> SELECT CEIL(-3.35),CEILING(3.35);
+-------------+---------------+
| CEIL(-3.35) | CEILING(3.35) |
+-------------+---------------+
|          -3 |             4 |
+-------------+---------------+
1 row in set (0.00 sec)

まとめ:CEIL(x),CEILING(x)は同じ意味で,xより小さくない最小整数を返す.戻り値をBIGINTに変換する.
mysql> SELECT FLOOR(-3.35),FLOOR(3.35);
+--------------+-------------+
| FLOOR(-3.35) | FLOOR(3.35) |
+--------------+-------------+
|           -4 |           3 |
+--------------+-------------+
1 row in set (0.00 sec)

まとめ:FLOOR(x)はx以下の最大整数を返し、戻り値はBIGINTに変換する.
4.ランダム関数RAND()とRAND(x)の取得
mysql> SELECT RAND(),RAND(),RAND(10),RAND(10),RAND(11);
+------------------+------------------+------------------+------------------+------------------+
| RAND()           | RAND()           | RAND(10)         | RAND(10)         | RAND(11)         |
+------------------+------------------+------------------+------------------+------------------+
| 0.17441298922004 | 0.73337492508197 | 0.65705152196535 | 0.65705152196535 | 0.90723463139239 |
+------------------+------------------+------------------+------------------+------------------+
1 row in set (0.02 sec)

まとめ:a.RAND(x)は、0から1の範囲のランダム浮動小数点値を返す.b.パラメータを持たないRAND()は、毎回発生する乱数値が異なる.c.パラメータ付きRAND(x)は、パラメータが同じである場合、同じ乱数を生成し、異なるxで生成される乱数の数値が異なる.
5.四捨五入関数ROUND(x)、ROUND(x,y)、TRUNCATE(x,y)
mysql> SELECT ROUND(-1.14),ROUND(-1.67),ROUND(1.14),ROUND(1.66);
+--------------+--------------+-------------+-------------+
| ROUND(-1.14) | ROUND(-1.67) | ROUND(1.14) | ROUND(1.66) |
+--------------+--------------+-------------+-------------+
|           -1 |           -2 |           1 |           2 |
+--------------+--------------+-------------+-------------+
1 row in set (0.00 sec)

まとめ:ROUND(x)はパラメータxに最も近い整数を返し,x値を四捨五入する.各値の整数部分のみが保持されます.
mysql> SELECT ROUND(1.38,1),ROUND(1.38,0),ROUND(232.38,-1),ROUND(232.38,-2);
+---------------+---------------+------------------+------------------+
| ROUND(1.38,1) | ROUND(1.38,0) | ROUND(232.38,-1) | ROUND(232.38,-2) |
+---------------+---------------+------------------+------------------+
|           1.4 |             1 |              230 |              200 |
+---------------+---------------+------------------+------------------+
1 row in set (0.00 sec)

まとめ:ROUND(x,y)はパラメータxに最も近い数を返し、その値は小数点以下のyビットを保持し、yが負の値であればx値を小数点左のyビットに保持する.
mysql> SELECT TRUNCATE(1.31,1),TRUNCATE(1.99,1),TRUNCATE(1.99,0),TRUNCATE(19.99,-1);
+------------------+------------------+------------------+--------------------+
| TRUNCATE(1.31,1) | TRUNCATE(1.99,1) | TRUNCATE(1.99,0) | TRUNCATE(19.99,-1) |
+------------------+------------------+------------------+--------------------+
|              1.3 |              1.9 |                1 |                 10 |
+------------------+------------------+------------------+--------------------+
1 row in set (0.00 sec)

まとめ:TRUNCATE(x,y)は小数点以下yビットに切り捨てられた数字xを返す.yの値が0の場合、結果は小数点以下または小数点以下ではありません.yを負数に設定すると、x小数点左からy位開始後のすべての下位の値を切り取る.
6.シンボル関数SIGN(x)
mysql> SELECT SIGN(-21),SIGN(0),SIGN(21);
+-----------+---------+----------+
| SIGN(-21) | SIGN(0) | SIGN(21) |
+-----------+---------+----------+
|        -1 |       0 |        1 |
+-----------+---------+----------+
1 row in set (0.00 sec)

まとめ:SIGN(x)はパラメータの一致を返し、xの値は負、ゼロまたは正の戻り結果は-1、0または1の順である.
7.べき乗演算関数POW(x,y)、POWER(x,y)、EXP(x)
mysql> SELECT POW(2,2),POWER(2,2),POW(2,-2),POWER(2,-2);
+----------+------------+-----------+-------------+
| POW(2,2) | POWER(2,2) | POW(2,-2) | POWER(2,-2) |
+----------+------------+-----------+-------------+
|        4 |          4 |      0.25 |        0.25 |
+----------+------------+-----------+-------------+
1 row in set (0.00 sec)

まとめ:POW(x,y)またはPOWER(x,y)関数は、xのy乗の結果値を返します.
mysql> SELECT EXP(3),EXP(-3),EXP(0);
+-----------------+-------------------+--------+
| EXP(3)          | EXP(-3)           | EXP(0) |
+-----------------+-------------------+--------+
| 20.085536923188 | 0.049787068367864 |      1 |
+-----------------+-------------------+--------+
1 row in set (0.00 sec)

まとめ:EXP(x)はeのx乗を返した値を返します.