前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SQL优化大神玩转MySQL函数系列(一)

SQL优化大神玩转MySQL函数系列(一)

作者头像
田帅萌
发布2019-08-27 14:38:15
7130
发布2019-08-27 14:38:15
举报
文章被收录于专栏:「3306 Pai」社区

导读:

本文节选自松华老师的《SQL优化专栏》 郑松华,知数堂SQL 优化班老师 现任 CCmediaService DBA,主要负责数据库优化相关工作 擅长SQL优化 ,数据核对

想阅读更多内容请点击订阅专栏


背景说明:

继有趣的SQL系列文章后,本次准备开关于“MySQL 函数应用”的系列文章。

这个系列,不是不符合实际的简单介绍函数的用法。

本系列将根据实际需求出发,介绍MySQL函数以便大家能更好的记住函数。

原来计划命名为“ MySQL 函数应用”此名并不能表达本意。

故而还是用回“MySQL 函数应用”命名。

需求说明:

因为,本人工作在韩国,这个需求也是从韩国实际出发的。

因为韩元的面额相对比较大,很多时候最小单元需要归零

比如: 20001元 需要 变成 20000元 ,20015 变成 20010 这样

今天的案例就是上面的实际案例,在MySQL 是怎么解决的,并且介绍几个函数。

本次案例是在MySQL 8.0 版本中

如上图所示, 我们需要把 其中的三行数 分别变成 20000,20000,20010

面对这个问题,我们肯定有很多解决方法。

如果大家学过Java 或者别的语言的话,有时候认为,只要循环+选择 就可以写出很多方法一样,在SQL中,你也可以使用case when语句实现你要的功能,但本文题目是:使用函数还是使用特定的函数来解决这个问题。

解决方案:

方法1、FLOOR 函数

在这介绍的函数,首先是 FLOOR 函数

MySQL 8.0参考手册函数说明:

https://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html#function_floor

简单来说就是,返回x的最大整数值,那我们怎么用这个函数呢?

这个函数只能处理小数点部分,20001 也不是小数!不是小数我们可以把它变成小数,即想对个位数清零我们只需要先除以10 然后调用floor 。

然后,对结果乘以10 就可以达到我们的目的了!

扩展以下 ,如果需求变成十位数以下都清零就变成 先除以100。

然后调用floor 然后对结果乘以100 就可以达到我们的目的了。

如果本次介绍的函数到这结束, 就有点太可惜,因为我们是依据案例介绍函数,

所以,肯定不止一个方法来解决。

方法2、TRUNCATE函数

今天介绍的第二个函数叫做 TRUNCATE

MySQL 8.0参考手册函数说明:

https://dev.mysql.com/doc/refman/8.0/en/mathematical-functions.html#function_truncate

大家请看,上述图片中的最后一个,是不是很有意思!

是不是符合本文需求!

谢谢大家~ 欢迎转发

END

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-08-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 3306pai 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档