MYSQL常用数值函数

来源:互联网 发布:如何进驻淘宝 编辑:程序博客网 时间:2024/06/06 02:43

“春心莫共花争发,一寸相思一寸灰”


MySQL 中另外一类很重要的函数就是数值函数,这些函数能处理很多数值方面的运算。可以想象,如果没有这些函数的支持,用户在编写有关数值运算方面的代码时将会困难重重,举个例子,如果没有 ABS 函数的话,如果要取一个数值的绝对值,就需要进行好多次判断才能返回这个值,而数字函数能够大大提高用户的工作效率。
ABS(x)函数:返回 x 的绝对值。
下例中显示了对正数和负数分别取绝对值之后的结果。

mysql> select ABS(-0.8) ,ABS(0.8);+-----------+----------+| ABS(-0.8) | ABS(0.8) |+-----------+----------+| 0.8 | 0.8 |+-----------+----------+1 row in set (0.09 sec)

CEIL(x)函数:返回大于 x 的最大整数。
下例中显示了对 0.8 和-0.8 分别 CEIL 后的结果。

mysql> select CEIL(-0.8),CEIL(0.8);+------------+-----------+| CEIL(-0.8) | CEIL(0.8) |+------------+-----------+| 0 | 1 |+------------+-----------+1 row in set (0.03 sec)

FLOOR(x)函数:返回小于 x 的最大整数,和 CEIL 的用法刚好相反。
下例中显示了对 0.8 和-0.8 分别 FLOOR 后的结果。

mysql> select FLOOR(-0.8), FLOOR(0.8);+-------------+------------+| FLOOR(-0.8) | FLOOR(0.8) |+-------------+------------+| -1 | 0 |+-------------+------------+1 row in set (0.00 sec)

MOD(x,y)函数:返回 x/y 的模。和 x%y 的结果相同,模数和被模数任何一个为 NULL 结果都为 NULL。如下例所示:

mysql> select MOD(15,10),MOD(1,11),MOD(NULL,10);+------------+-----------+--------------+| MOD(15,10) | MOD(1,11) | MOD(NULL,10) |+------------+-----------+--------------+| 5 | 1 | NULL |+------------+-----------+--------------+1 row in set (0.00 sec)

RAND()函数:返回 0 到 1 内的随机值。
每次执行结果都不一样,如下例所示:

mysql> select RAND(),RAND();+------------------+------------------+| RAND() | RAND() |+------------------+------------------+| 0.12090325459922 | 0.83369727882901 |+------------------+------------------+1 row in set (0.00 sec)

利用此函数可以取任意指定范围内的随机数,比如需要产生 0~100 内的任意随机整数,可以操作如下:

mysql> select ceil(100*rand()),ceil(100*rand());+------------------+------------------+| ceil(100*rand()) | ceil(100*rand()) |+------------------+------------------+| 91 | 15 |+------------------+------------------+1 row in set (0.00 sec)

ROUND(x,y)函数:返回参数 x 的四舍五入的有 y 位小数的值。如果是整数,将会保留 y 位数量的 0;如果不写 y,则默认 y 为 0,即将 x 四舍五入后取整。适合于将所有数字保留同样小数位的情况。如下例所示。

mysql> select ROUND(1.1),ROUND(1.1,2),ROUND(1,2);+------------+--------------+------------+| ROUND(1.1) | ROUND(1.1,2) | ROUND(1,2) |+------------+--------------+------------+| 1 | 1.10 | 1.00 |+------------+--------------+------------+1 row in set (0.00 sec)

TRUNCATE(x,y)函数:返回数字 x 截断为 y 位小数的结果。
注意 TRUNCATE 和 ROUND 的区别在于 TRUNCATE 仅仅是截断,而不进行四舍五入。下例中
描述了二者的区别:

mysql> select ROUND(1.235,2),TRUNCATE(1.235,2);+----------------+-------------------+| ROUND(1.235,2) | TRUNCATE(1.235,2) |+----------------+-------------------+| 1.24 | 1.23 |+----------------+-------------------+1 row in set (0.00 sec)