MySQL中常见的数值函数

第一个

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 的函数,生成一个六位数的随机验证码。

第一种写法:

1、先用 round 生成随机数;

select round();

 查询结果:

2、再用 subtring 函数进行截取,求出了六位数的随机验证码。

select subtring(round() , 3 , 6);

查询结果: 

第二种写法:

rand() * 100 小数点前面随机生成 2 位数或者 1 位数;

rand() * 1000 小数点前面随机生成 3 位数或者 2 位数;

... ...

...

1、要生成 6 位数的话,就 rand() * 1000000;

select round() * 1000000;

查询结果: 

2、再对该随机数使用 round 进行四舍五入,保留 0 位小数;

select round(rand() * 1000000 , 0);

查询结果: 

可是,它除了随机生成 6 位数,还可能会生成 5 位数,那是因为 rand() 是生成 0 - 1 之间的数,很有可能会有 0 和 1000000 相乘的情况; 

3、所以要用到另一个函数,lpad 或者 rpad,对该随机数进行左填充或者右填充,我这里用了左填充,填充 0,也求出了六位数的随机验证码。

select lpad(round(rand() * 1000000 , 0),6,'0');

查询结果:  

最后,我想说的是,条条大路通罗马,用什么方法不重要,需求实现了就好啦!!!

完。。。

猜你喜欢

转载自blog.csdn.net/weixin_62332711/article/details/128669098
今日推荐