MySQL 中的取整函数
今天在写代码的时候遇到了一个取整问题在此记录一下
ROUND
MySQL ROUND()
函数用于将数字四舍五入到指定的小数位数
1 | ROUND(number, decimals) |
其中,number 是要舍入的数字,decimals 是要保留的小数位数。例如,将数字 3.14159265358979323846 舍入到小数点后两位,可以使用以下查询:
1 | SELECT ROUND(3.14159265358979323846, 2); // 3.14 |
FLOOR
MySQL FLOOR()
函数用于将数字向下取整到最接近的整数
1 | FLOOR(number) |
其中,number 是要向下取整的数字。例如,将数字 3.99 向下取整到最接近的整数,可以使用以下查询:
1 | SELECT FLOOR(3.99); // 3 |
CEILING
MySQL CEILING()
函数用于将数字向上取整到最接近的整数
1 | CEILING(number) |
其中,number 是要向上取整的数字。例如,将数字 3.01 向上取整到最接近的整数,可以使用以下查询:
1 | SELECT CEILING(3.01); // 4 |
TRUNCATE
MySQL TRUNCATE()
函数用于将数字截断到指定的小数位数,不进行四舍五入
1 | TRUNCATE(number, decimals) |
其中,number 是要截断的数字,decimals 指定要保留的小数位数。 例如,将数字 3.14159 截断到两位小数,可以使用以下查询:
1 | SELECT TRUNCATE(3.14159, 2); // 3.14 |
与 ROUND()
函数不同, TRUNCATE()
函数不会进行四舍五入,而只是简单地截断数字
FORMAT
MySQL FORMAT()
函数用于将数字格式化为指定的格式
1 | FORMAT(number, decimal_places) |
其中,number 是要格式化的数字, decimal_places 指定要保留的小数位数。 例如,将数字 123456.789 格式化成带千分位的字符串,并保留两位小数,可以使用以下查询:
1 | SELECT FORMAT(123456.789, 2); // 123,456.79 |
注意:FORMAT()
函数返回一个字符串,如果要执行其他计算,需要使用 CAST()
函数将其转换为数字。这个字符串我们可以有很多操作空间,要重点关注,比如可以对查询出来的字符串数值进行匹配替换,我今天遇到的也是这个问题
FORMAT()
函数也可以使用第三个参数来指定千分位分隔符和小数点符号(了解即可)。举个例子:
1 | SELECT FORMAT(123456.789, 2, 'de_DE'); // 123.456,79 |