📅  最后修改于: 2023-12-03 14:51:10.935000             🧑  作者: Mango
在 SQL 中,ROUND 函数用于将数字舍入到指定的小数位数。然而,在某些情况下,我们可能需要显示没有经过 ROUND 函数舍入的结果。下面介绍几种方法来实现这一目的。
CAST 函数用于将一个数据类型转换成另一个数据类型。如果将一个数字转换成 DECIMAL 类型,并且指定小数位数为 0,那么就可以得到没有经过 ROUND 函数的结果。
SELECT CAST(12.345 AS DECIMAL(18,0))
输出结果为:
12
如果原始数字的小数位数大于指定的 DECIMAL 类型的小数位数,那么仍然会进行四舍五入。例如:
SELECT CAST(12.3456 AS DECIMAL(18,2))
输出结果为:
12.35
FORMAT 函数用于将一个数字格式化成指定的文本格式。使用此函数即可得到没有 ROUND 函数的结果。
SELECT FORMAT(12.345, '#.##################')
输出结果为:
12.345
在使用 FORMAT 函数时,需要明确指定精度。如果不明确指定精度,那么仍然会进行四舍五入。例如:
SELECT FORMAT(12.3456, '#.##################')
输出结果为:
12.3456
如果不想使用 CAST 函数或 FORMAT 函数,还可以通过字符串拼接的方式来实现。将数字转换成字符串,并截取其中的整数部分即可得到没有 ROUND 函数的结果。
SELECT SUBSTRING_INDEX(12.345, '.', 1)
输出结果为:
12
此方法不能用于负数或科学计数法表示的数字。如果需要处理这类数字,建议使用 CAST 函数或 FORMAT 函数。