Mysqlノート3の数学関数
6886 ワード
Mysqlノート3の数学関数
数学関数は主に数値データを処理する.主に絶対値関数,三角関数,対数関数,乱数関数がある.エラーが発生すると、数学関数は空の値NULLを返します.
1.絶対値関数ABS(x)と戻り円周率関数PI()
まとめ:pi()は7ビット有効数字を保持
2.平方根関数SQRT(x)と余剰関数MOD(x,y)を求める
まとめ:負数に平方根がないため-49はNULLを返します
まとめ:MOD(x,y)はxがyで除算された剰余を返し、MOD()は小数点以下の数値にも作用する
3.整数の関数CEIL(x)、CEILING(x)、FLOOR(x)を取得する
まとめ:CEIL(x),CEILING(x)は同じ意味で,xより小さくない最小整数を返す.戻り値をBIGINTに変換する.
まとめ:FLOOR(x)はx以下の最大整数を返し、戻り値はBIGINTに変換する.
4.ランダム関数RAND()とRAND(x)の取得
まとめ:a.RAND(x)は、0から1の範囲のランダム浮動小数点値を返す.b.パラメータを持たないRAND()は、毎回発生する乱数値が異なる.c.パラメータ付きRAND(x)は、パラメータが同じである場合、同じ乱数を生成し、異なるxで生成される乱数の数値が異なる.
5.四捨五入関数ROUND(x)、ROUND(x,y)、TRUNCATE(x,y)
まとめ:ROUND(x)はパラメータxに最も近い整数を返し,x値を四捨五入する.各値の整数部分のみが保持されます.
まとめ:ROUND(x,y)はパラメータxに最も近い数を返し、その値は小数点以下のyビットを保持し、yが負の値であればx値を小数点左のyビットに保持する.
まとめ:TRUNCATE(x,y)は小数点以下yビットに切り捨てられた数字xを返す.yの値が0の場合、結果は小数点以下または小数点以下ではありません.yを負数に設定すると、x小数点左からy位開始後のすべての下位の値を切り取る.
6.シンボル関数SIGN(x)
まとめ:SIGN(x)はパラメータの一致を返し、xの値は負、ゼロまたは正の戻り結果は-1、0または1の順である.
7.べき乗演算関数POW(x,y)、POWER(x,y)、EXP(x)
まとめ:POW(x,y)またはPOWER(x,y)関数は、xのy乗の結果値を返します.
まとめ:EXP(x)はeのx乗を返した値を返します.
数学関数は主に数値データを処理する.主に絶対値関数,三角関数,対数関数,乱数関数がある.エラーが発生すると、数学関数は空の値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乗を返した値を返します.