Oracle SQL - 根据条件将小数点四舍五入为 2/3
Oracle SQL - Round decimal to 2/3 based on conditon
您好,我有一个要求,我需要根据条件对小数进行四舍五入:
如果小数点后的第一个2位不是00那么我需要把它四舍五入到2位,否则3位。
示例:
1.232133342 => ROUND(1.232133342,2)
//这会起作用
但是如果数字是 1.00233231213
值应该是 1.002
//四舍五入到 3 位数
如果数字是 1.0000223123312
那么值应该是 1.00002
有什么功能吗?有帮助吗?
从数字中减去数字的下限,并检查它是否小于.01
。
CASE WHEN ABS(number) - FLOOR(ABS(number)) < .01 THEN ROUND(number, 3)
ELSE ROUND(number, 2)
END
通过使用 RegEx
计算小数部分中前导零的数量,四舍五入到至少两位数,可能更多
round(x, greatest(2, length(regexp_substr(x,'\.0*'))))
您好,我有一个要求,我需要根据条件对小数进行四舍五入:
如果小数点后的第一个2位不是00那么我需要把它四舍五入到2位,否则3位。
示例:
1.232133342 => ROUND(1.232133342,2)
//这会起作用
但是如果数字是 1.00233231213
值应该是 1.002
//四舍五入到 3 位数
如果数字是 1.0000223123312
那么值应该是 1.00002
有什么功能吗?有帮助吗?
从数字中减去数字的下限,并检查它是否小于.01
。
CASE WHEN ABS(number) - FLOOR(ABS(number)) < .01 THEN ROUND(number, 3)
ELSE ROUND(number, 2)
END
通过使用 RegEx
计算小数部分中前导零的数量,四舍五入到至少两位数,可能更多round(x, greatest(2, length(regexp_substr(x,'\.0*'))))