一、MySQL函数简介
函数表示对输入参数值返回一个具有特定关系的值,MySQL提供了大量丰富的函数,在进行数据库管理以及数据的查询和操作时将会经常使用到各种函数。通过对数据的处理,数据库功能可以变得更加强大,更加灵活地满足不同用户的需求。各类函数从功能方面主要分为:数学函数、字符串函数、日期和时间函数、条件判断函数、系统信息函数和加密函数等。
二、数学函数
数学函数主要用来处理数值数据,主要的数学函数有:绝对值函数、三角函数(包括正弦函数、余弦函数、正切函数、余切函数)、对数函数、随机数函数等,在有错误产生时,数学函数将会返回控制NULL。
2.1 绝对值函数ABS(x)
mysql> SELECT ABS(10),ABS(-9);
+---------+---------+
| ABS(10) | ABS(-9) |
+---------+---------+
| 10 | 9 |
+---------+---------+
2.2 返回圆周率的函数PI()
返回圆周率π的值,默认显示小数点后6位
mysql> SELECT PI();
+----------+
| PI() |
+----------+
| 3.141593 |
+----------+
2.3 平方根函数 SQRT(x)
SQRT(x) 返回非负数的二次方跟,负数返回NULL
mysql> SELECT SQRT(49),SQRT(9),SQRT(15),SQRT(-49);
+----------+---------+-------------------+-----------+
| SQRT(49) | SQRT(9) | SQRT(15) | SQRT(-49) |
+----------+---------+-------------------+-----------+
| 7 | 3 | 3.872983346207417 | NULL |
+----------+---------+-------------------+-----------+
1 row in set (0.00 sec)
2.4 求余函数 MOD(x,y)
mysql> SELECT MOD(10,3),MOD(20,6),MOD(105.5,10);
+-----------+-----------+---------------+
| MOD(10,3) | MOD(20,6) | MOD(105.5,10) |
+-----------+-----------+---------------+
| 1 | 2 | 5.5 |
+-----------+-----------+---------------+
1 row in set (0.00 sec)
2.5 向上取整函数 CEIL(x) 或 CEILING(x)
mysql> SELECT CEIL(1.1), CEIL(1.9), CEIL(-3.6);
+-----------+-----------+------------+
| CEIL(1.1) | CEIL(1.9) | CEIL(-3.6) |
+-----------+-----------+------------+
| 2 | 2 | -3 |
+-----------+-----------+------------+
2.6 向下取整函数 FLOOR(x)
mysql> SELECT FLOOR(2.9), FLOOR(-3.5), FLOOR(5.1);
+------------+-------------+------------+
| FLOOR(2.9) | FLOOR(-3.5) | FLOOR(5.1) |
+------------+-------------+------------+
| 2 | -4 | 5 |
+------------+-------------+------------+
1 row in set (0.00 sec)
2.7 获取随机数函数 RAND()
RAND() 返回一个随机浮点数v, 范围在 0到1之间 (0 <= v <= 1)。如果指定一个正数x RAND(x),则它被用做种子值,用来产生重复序列。
1、不加参数的情况
不带参数的RAND()每次产生的随机数值是不同的
mysql> SELECT RAND(), RAND(), RAND();
+--------------------+---------------------+--------------------+
| RAND() | RAND() | RAND() |
+--------------------+---------------------+--------------------+
| 0.9613640363899656 | 0.03713582645834966 | 0.3015870538554965 |
+--------------------+---------------------+--------------------+
1 row in set (0.00 sec)
2、加参数的情况
当RAND(x)的参数x相同时,将产生相同的随机数,不同的x产生的随机数不相同
mysql> SELECT RAND(1), RAND(1), RAND(2);
+---------------------+---------------------+--------------------+
| RAND(1) | RAND(1) | RAND(2) |
+---------------------+---------------------+--------------------+
| 0.40540353712197724 | 0.40540353712197724 | 0.6555866465490187 |
+---------------------+---------------------+--------------------+
2.8 四舍五入函数 ROUND(x,y)
1、ROUND(x) 返回最接近于参数 x 的整数,对 x 值进行四舍五入,只保留整数部分。
mysql> SELECT ROUND(1.59), ROUND(5.19), ROUND(-1.14), ROUND(-1.69);
+-------------+-------------+--------------+--------------+
| ROUND(1.59) | ROUND(5.19) | ROUND(-1.14) | ROUND(-1.69) |
+-------------+-------------+--------------+--------------+
| 2 | 5 | -1 | -2 |
+-------------+-------------+--------------+--------------+
2、ROUND(x,y) 返回最接近于参数 x 的数,其值保留到小数点后面 y 位,如果 y 是负值,则将保留 x 值到小数点左边 y 位。
说明:y 为负值时,保留的小数点左边的相应位数值直接修改为 0,不进行四舍五入。
mysql> SELECT ROUND(1.39, 1), ROUND(1.525, 2), ROUND(9.39, 0), ROUND(112.33, -1), ROUND(112.33, -2);
+----------------+-----------------+----------------+-------------------+-------------------+
| ROUND(1.39, 1) | ROUND(1.525, 2) | ROUND(9.39, 0) | ROUND(112.33, -1) | ROUND(112.33, -2) |
+----------------+-----------------+----------------+-------------------+-------------------+
| 1.4 | 1.53 | 9 | 110 | 100 |
+----------------+-----------------+----------------+-------------------+-------------------+
2.9 截取数字函数 TRUNCATE(x,y)
TRUNCATE(x,y) 返回被舍去至小数点后 y 位的数字 x。如果 y 的值是0,则结果不带有小数点或不带有小数部分。如果y为负值,则归零x小数点左边起第y位开始后面所有低位的值
mysql> SELECT TRUNCATE(19.12,1), TRUNCATE(1.995, 2), TRUNCATE(1.99, 0), TRUNCATE(19.12, -1);
+-------------------+--------------------+-------------------+---------------------+
| TRUNCATE(19.12,1) | TRUNCATE(1.995, 2) | TRUNCATE(1.99, 0) | TRUNCATE(19.12, -1) |
+-------------------+--------------------+-------------------+---------------------+
| 19.1 | 1.99 | 1 | 10 |
+-------------------+--------------------+-------------------+---------------------+
2.10 符号函数 SIGN(x)
SIGN(x) 返回参数的符号,x的值为负数返回-1,x值为0返回0,x值为正数时返回1
mysql> SELECT SIGN(3), SIGN(0), SIGN(-18.3);
+---------+---------+-------------+
| SIGN(3) | SIGN(0) | SIGN(-18.3) |
+---------+---------+-------------+
| 1 | 0 | -1 |
+---------+---------+-------------+