第一个
ceil(x):向上取整
取整,顾名思义就是取整数;
向上取整是只要小数位不是 0,都会向上进 1 位整数。
案例 1:
select ceil(9.2);
解析:
9.2 向上取一位整数,就是 10。
查询结果:
案例 2:
select ceil(9.0);
解析:
9.0 小数位是 0,不能进行向上取整,直接取整数位,就是 9。
查询结果:
注意:无论小数位是多少,只要不是0,都会取向前取一位,比如:ceil(9.229),向上取整后还是 10。
第二个
floor(x):向下取整
向下取整是直接去掉小数部分,直接取整数。
案例:
select floor(8.9);
解析:
8.9 直接去掉小数位,就是 9。
查询结果:
注意:无论小数位是多少,都只会取整,比如:floor(2.33333),取整后还是 2。
第三个
mod(x , y):取模
之前文章讲过,指引:
mod函数怎么取模_^O^——的博客-CSDN博客_mod 取模运算
第四个
rand():生成 0 - 1 之间的随机数
select rand();
查询结果:
第五个
round(x , y):求 x 四舍五入的值,保留 y 位小数
四舍五入的意思:取小数位的最后一个值,如果尾数的位数是 4,或者比 4 小,就把该尾数去掉;如果尾数的位数是 5,或者比 5 大,就在它的前面一位进 1 位数。
案例1:
select round(2.33,1);
解析:
x 位四舍五入:尾数是 3,3 比 4 小,舍弃掉;
保留 1 位 小数,就是 2.3。
查询结果:
案例2:
select round(2.45,1);
解析:
x 位四舍五入:尾数是 5,往前进 1 位数,4 变成 5;
保留 1 位 小数,就是 2.5。
查询结果:
综合案例:
用 MySQL 的函数,生成一个六位数的随机验证码。
第一种写法:
先用 round() 生成随机数;
select round();
查询结果:
再用 subtring 函数进行截取,求出了六位数的随机验证码。
select subtring(round() , 3 , 6);
查询结果:
第二种写法:
rand() * 100 小数点前面随机生成 2 位数或者 1 位数;
rand() * 1000 小数点前面随机生成 3 位数或者 2 位数;
... ...
...
要生成 6 位数的话,就 rand * 1000000;
select round() * 1000000;
查询结果:
再对该随机数进行四舍五入,保留 0 位小数;
select round(rand() * 1000000 , 0);
查询结果:
可是,它除了随机生成 6 位数,还可能会生成 5 位数,那是因为 rand() 是生成 0 - 1 之间的数,很有可能会有 0 和 1000000 相乘的情况;
所以要用到另一个函数,lpad 或者 rpad,对该随机数进行左填充或者右填充,我这里用了左填充,也求出了六位数的随机验证码。
最后,我想说的是,条条大路通罗马,用什么方法不重要,需求实现了就好啦!!!
完。。。