Oracle SQL-根据条件将小数舍入为2/3

时间:2018-11-19 07:46:08

标签: sql oracle rounding truncate

你好,我有一个要求,我需要根据条件四舍五入小数:

如果小数点后的前两位不是00,那么我需要将其四舍五入为2位,否则为3位。

示例: 1.232133342 => ROUND(1.232133342,2) //这将起作用

但如果数字为1.00233231213,则值应为1.002 //四舍五入到三位数

如果数字为1.0000223123312,则该值应为1.00002

有功能吗?有帮助吗?

2 个答案:

答案 0 :(得分:4)

四舍五入到至少两位数,或者通过使用RegEx计算小数部分中前导零的数目可能会更多

round(x, greatest(2, length(regexp_substr(x,'\.0*'))))

请参阅db-fiddle

答案 1 :(得分:3)

从数字中减去数字的底数,然后检查数字是否小于.01

CASE WHEN ABS(number) - FLOOR(ABS(number)) < .01 THEN ROUND(number, 3)
     ELSE ROUND(number, 2)
END