大家好,我是知数堂SQL 优化班老师 网名:骑龟的兔子
我之前写了,有趣的SQL系列文章,这次准备再开一个系列是MySQL 函数应用系列,
这个系列,肯定不是,不符合实际的 简单的介绍函数的用法,本系列根据实际 需求出发,
介绍MySQL函数 以便大家能更好的记住函数。还有一件事情,就是本系列的名字,
本来叫做 MySQL 函数应用(1)有点太普通,
所以搞了个(震惊 ! 10 年经验 SQL 优化大神 竟然 这样使用 MySQL 函数)
这样才能 增加点击率呢~~
本次,先这样试一下,效果~~
因为,本人 工作在韩国,这个需求也是韩国的,如下
因为韩元的面额相对比较大,很多时候最小单元需要归零
如 20001元 需要 变成 20000元 ,20015 变成 20010 这样
今天的案例就是上面的实际案例,在MySQL 是怎么解决的,并且介绍几个函数。
本次案例是在MySQL 8.0 版本中
![ccd3511263e2ced8f73d3bb105d70f35.png](https://img-blog.csdnimg.cn/img_convert/ccd3511263e2ced8f73d3bb105d70f35.png)
如上图所示, 我们需要把 其中的三行数 分别变成 20000,20000,20010
面对这个问题,我们肯定有很多解决方法,就如,如果大家学过Java 或者别的语言的话,
有时候认为,只要循环+选择 就可以写出很多方法一样,在SQL中,你也可以使用case when
语句实现你要的功能,但本文题目是 使用函数 还是使用特定的函数来解决这个问题。
在这介绍的函数,首先是 FLOOR 函数
12.6.2 Mathematical Functionsdev.mysql.com![2d1c66700ca309ecd6e7531bb681f7f4.png](https://img-blog.csdnimg.cn/img_convert/2d1c66700ca309ecd6e7531bb681f7f4.png)
简单来说就是,返回x的最大整数值,那我们怎么用这个函数呢,
这个函数只能处理小数点部分,20001 也不是小数!不是小数我们可以把它变成小数,
即想对个位数清零我们只需要先除以10 然后调用floor 然后,
对结果乘以10 就可以达到我们的目的了!
![7628d9aea4b394852618017b17efe7e2.png](https://img-blog.csdnimg.cn/img_convert/7628d9aea4b394852618017b17efe7e2.png)
扩展以下 ,如果需求变成十位数以下都清零就变成 先除以100
然后调用floor 然后对结果乘以100 就可以达到我们的目的了
![e4162e718f784f52cf7619ed8ae96835.png](https://img-blog.csdnimg.cn/img_convert/e4162e718f784f52cf7619ed8ae96835.png)
本次介绍的函数,就到这了!到这结束, 就有点太可惜,因为我们是依据案例介绍函数,
所以,肯定不止一个方法来解决
上述问题。今天介绍的第二个函数叫做 TRUNCATE
12.6.2 Mathematical Functionsdev.mysql.com![23df17d1b35721367482c0f83893959e.png](https://img-blog.csdnimg.cn/img_convert/23df17d1b35721367482c0f83893959e.png)
大家请看,上述图片中的最后一个,是不是很有意思!
是不是复合,本文需求!
![21f9a6b7d804667fb59302bf7cdc67e5.png](https://img-blog.csdnimg.cn/img_convert/21f9a6b7d804667fb59302bf7cdc67e5.png)
谢谢大家~
我是知数堂SQL 优化班老师~ ^^
如有关于SQL优化方面疑问和一起交流的请加 并且 @兔子@知数堂SQL优化
![a8baf1f0bcf279c4353b53bf4e8c5d50.png](https://img-blog.csdnimg.cn/img_convert/a8baf1f0bcf279c4353b53bf4e8c5d50.png)