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

1. 关于 MySQL 中的 TRUNCATE 函数

1.1 TRUNCATE 函数

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

TRUNCATE(number, decimals)

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

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

id user_id amount create_time 1 1001 123.456 2023-05-21 16:28:34 2 1002 789.123 2023-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,内容如下:

id name age score 1 Alice 18 90.44 2 Bob 20 85.88 3 Cindy 19 92.32 4 David 19 87.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,内容如下:

id user_id amount create_time 1 1001 123.456 2023-05-21 16:28:34 2 1002 789.123 2023-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 函数并通过示例代码演示了它们的用法。掌握这些函数,可以让我们更加高效地处理和分析数字数据,提高数据分析和开发的效率。

经验分享 程序员 微信小程序 职场和发展