Функции ROUND, TRUNC и MOD
В посте рассматриваются функции ROUND, TRUNC и MOD относящиеся к функциям по работе с числовыми данными.
Существенным отличием между числовыми и другими функциями является то, что они принимают и возвращают только числовые данные. Oracle предоставляет числовые функции для решения тригонометрических, степенных и логарифмических задач. Ниже рассматриваются три однострочные числовые функции – ROUND, TRUNC и MOD:
Функция ROUND выполняет операцию округления числового значения на основе указанной десятичной точности. Возвращаемое значение округляется в большую или меньшую сторону в зависимости от числового значения значащей цифры в позиции, задаваемой десятичной точностью. Если заданная десятичная точность равна n, то значимая для округления позиция является: (n + 1)-я относительно десятичной запятой (точки) вправо для n>=0 и (0-n)-я относительно десятичной запятой (точки) влево для n<0. Если числовое значение значащей цифры больше или равно 5, происходит «округление вверх», иначе происходит «округление вниз». Синтаксис функции:
ROUND (числовое значение, (десятичная точность)),
Описания десятичной точности
Десятичная точность | Десятичная позиция |
-4 | десятки тысяч (n*10000) |
-3 | тысячи (n * 1000) |
-2 | сотни (n * 100) |
-1 | десятки (n * 10) |
0 | единицы (n * 1) |
1 | десятых (n ÷ 10) |
2 | сотых (n ÷ 100) |
3 | тысячных (n ÷ 1000) |
4 | десятитысячных (n ÷ 10000) |
Примеры использования функции ROUND:
SELECT round(2020.240352, 1) FROM dual;
SELECT round(2020.240352, 4) FROM dual;
SELECT round(2020.240352, -3) FROM dual;
SELECT round(2020.240352, 0) FROM dual;
Если для примера выше опустить значение десятичной точности 0, то получается идентичный результат. При отсутствии десятичной точности, функция ROUND обрабатывает целую часть числа, как это было бы с десятичной точностью равной 0:
SELECT round(2020.240352) FROM dual;
Функция TRUNC выполняет операцию усечения числового значения на основе указанной десятичной точности. Числовое усечение отличается от округления тем, что результирующее значение отбрасывает числовые знаки с позиции (n+1)-й вправо от десятичной запятой (точки) указанной десятичной точности n, если десятичная точность положительна или равна нулю. Если заданная десятичная точность n отрицательна, в исходном числе проставляются значащие нули до (0-n)-й десятичной позиции включительно влево от десятичной запятой (точки). Синтаксис функции:
TRUNC (числовое значение, (десятичная точность)).
Примеры использования функции TRUNC:
SELECT trunc(2020.240352, 1) FROM dual;
SELECT trunc(2020.240352, 4) FROM dual;
SELECT trunc(2020.240352, -3) FROM dual;
При отсутствии десятичной точности, функция TRUNC обрабатывает целую часть числа, как это было бы с десятичной точностью равной нулю:
SELECT trunc(2020.240352) FROM dual;
Функция MOD возвращает числовой остаток от операции деления. Функция MOD выполняет операцию модульного деления. Ее синтаксис:
MOD (делимое, делитель)
Примеры использования функции MOD:
SELECT mod(7,2) FROM dual; Результат: 1
SELECT mod(8,2) FROM dual; Результат: 0
SELECT mod(21,2.7) FROM dual; Результат: 2.1
SELECT mod(4,9) FROM dual; Результат: 4