MySQL 中的 截断为指定位数 TRUNCATE、ROUND、FLOOR

news/2024/11/8 7:28:47/

1. 关于 MySQL 中的 TRUNCATE 函数

1.1 TRUNCATE 函数

TRUNCATE 函数用于将数字型数据截断为指定位数,常用于处理金额等数字列,以满足业务需求。语法如下:

TRUNCATE(number, decimals)

其中,number 表示要截断的数字,decimals 表示要保留的小数位数。下面是 TRUNCATE 函数的示例:

假设有一个订单表 orders,内容如下:

iduser_idamountcreate_time
11001123.4562023-05-21 16:28:34
21002789.1232023-05-22 10:15:23

要将订单中的金额字段保留两位小数并截断为整数,可以使用以下 SQL 语句:

SELECT TRUNCATE(amount, 2) FROM orders;

执行结果如下:

TRUNCATE(amount, 2)
123
789

可以看到,执行结果是一个整数,表示每个订单中的金额已经被截断并保留了两位小数。

1.2 ROUND 函数

ROUND 函数也可以对数字进行截断,但它会根据截断位置进行四舍五入,并返回一个浮点型值。常用于需要对数字进行精度控制的场景。语法如下:

ROUND(number, decimals)

其中,number 表示要截断的数字,decimals 表示要保留的小数位数。下面是 ROUND 函数的示例:

假设有一个学生表 students,内容如下:

idnameagescore
1Alice1890.44
2Bob2085.88
3Cindy1992.32
4David1987.56

要将每个学生的成绩保留两位小数,并根据第二位数字进行四舍五入,可以使用以下 SQL 语句:

SELECT ROUND(score, 2) FROM students;

执行结果如下:

ROUND(score, 2)
90.44
85.88
92.32
87.56

可以看到,执行结果是一个浮点型值,表示每个学生的成绩已经被截断并保留了两位小数。

2. 功能类似的方法

2.1 FLOOR 函数

FLOOR 函数用于将数字向下取整为最接近它的整数。常用于需要将数字转换为整数的场景。语法如下:

FLOOR(number)

其中,number 表示要取整的数字。下面是 FLOOR 函数的示例:

假设有一个销售表 sales,内容如下:

iduser_idamountcreate_time
11001123.4562023-05-21 16:28:34
21002789.1232023-05-22 10:15:23

要将订单中的金额字段向下取整为整数,可以使用以下 SQL 语句:

SELECT FLOOR(amount) FROM sales;

执行结果如下:

FLOOR(amount)
123
789

可以看到,执行结果是一个整数,表示每个订单中的金额已经被向下取整。

2.2 TRUNCATE 和 ROUND 的区别

TRUNCATE 和 ROUND 函数都可以对数字进行截断,但它们的截断规则和返回值类型有所区别。TRUNCATE 函数是直接舍去数字的小数部分,返回一个整数;ROUND 函数则是根据截断位置进行四舍五入,返回一个浮点型值。

3. 总结

MySQL 中提供了多种用于对数字进行精度控制和取整的函数,包括 TRUNCATE、ROUND 和 FLOOR 等。这些函数都有着各自的优劣和适用场景,在开发中需要根据实际情况选择最合适的工具来处理数字数据。

本文介绍了 MySQL 中 TRUNCATE 函数以及 ROUND、FLOOR 函数并通过示例代码演示了它们的用法。掌握这些函数,可以让我们更加高效地处理和分析数字数据,提高数据分析和开发的效率。


http://www.ppmy.cn/news/77968.html

相关文章

2023-05-23 题目

1、在java中定义一个无参的构造方法的作用: 在java程序执行子类的构造方法之前,如果是没有super()来调用父类的特定的构造方法,则会调用父类中没有参数的构造方法。 如果java中没有定义无参的方法,且没有指定super()方法&#x…

MySQL主从同步(不开GTID)

一、背景 了解并熟悉MySQL的主从同步的搭建过程,并解决搭建过程中所碰到的问题。 二、目标 了解并熟悉MySQL的主从同步的搭建过程,并解决搭建过程中所碰到的问题。 IP地址MySQL版本主从关系192.168.3.2445.6.51Master192.168.3.2455.7.41Slaver192.16…

实时频谱-2.5DPX

数字荧光显示 “数字荧光”一词源自包在阴极射线管(CRT)上的荧光,电视机、计算机监视器和其它测试设备显示器都使用阴极射线管。在电子束激活荧光时,它会发出荧光,照亮电子流画出的路径。 尽管液晶显示器(LCD)之类的光栅扫描技术由于厚度和…

软件工程中的相关定律(康威定律和邓巴数字)

康威定律 康威定律(Conway’s Law)是一个软件工程领域的原则,由计算机科学家梅尔文康威(Melvin Conway)于1968年提出。康威定律的原文是:“任何组织在设计一个系统时,所交付的设计方案的结构&a…

[C++/PTA] 时间相加

[C/PTA] 时间相加 题目要求解题思路代码总结 题目要求 设计一个时间类,用来保存时、分、秒等私有数据成员,通过重载操作符实现2个时间的相加。 要求: (1)小时的时间范围限制在大于等于0;(2&…

什么是BFC?它的作用是什么?

文章目录 1.BFC定义创建BFC的条件BFC的特点 2.BFC的作用 1.BFC定义 块格式化上下文(Block Formatting Context,BFC)是Web页面的可视化CSS渲染的一部分,是布局过 程中生成块级盒子的区域,也是浮动元素与其他元素的交互限…

如何编写一个测试方案?---她是这样做的!

1、背景 工作上的项目规范要求:测试排期大于3D的项目要编写测试方案。调研了部分同学的情况,在此流程规范要求的基础上,对于需求的逻辑复杂或技术实现复杂等情况也会准备测试方案。 我个人主要负责OMS系统测试,它是整个履约流转中…

ChatGPT:Sorry, You Have Been Blocked - 如何解决?

ChatGPT 是由 OpenAI 开发的 AI 聊天机器人,自2022年向公众发布以来,已经帮助全球数百万用户解决各种问题。然而,有时候您可能会遇到一个令人困惑的问题:“Sorry, You Have Been Blocked”。这意味着您无法使用 ChatGPT。本文将为…