Oracle SQL - округлить десятичную дробь до 2/3 в зависимости от условий - PullRequest
0 голосов
/ 19 ноября 2018

Здравствуйте, у меня есть требование, где мне нужно округлить десятичные дроби на основе условия:

Если первые 2 цифры после десятичных чисел не 00, то мне нужно округлить его до 2, в противном случае - до 3.

Пример: 1.232133342 => ROUND(1.232133342,2) // это будет работать

, но если число равно 1.00233231213, значение должно быть 1.002 // округлено до 3 цифр

, есличисло 1.0000223123312, тогда значение должно быть 1.00002

Есть ли какая-либо функция?Любая помощь?

Ответы [ 2 ]

0 голосов
/ 19 ноября 2018

Это округляет по крайней мере до двух цифр, может быть больше, подсчитывая число ведущих нулей в дробной части, используя RegEx

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

см. дб-скрипка

0 голосов
/ 19 ноября 2018

Вычтите пол числа из числа и проверьте, меньше ли оно .01.

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