Вход
huffson.com
huffson.com
testopay.com

Математические функции в SQL (модуль числа, округление, возведение в степень, вычисление корня)

birds
Администратор

Сообщений: 626

Благодарности: 87

На форуме: с 02.03.20

07 апр 2022   09:40

Здравствуйте, уважаемые читатели блога webcodius.ru. Сегодня продолжим изучение баз данных, а именно пройдемся по математическим функциям языка sql. Использование математических функций sql поможет перенести часть логики приложения с web-сервера на сервер базы данных, тем самым разгрузив web-сервер на который обычно ложится основная нагрузка.

Сразу отмечу, что в случае ошибки все математические функции возвращают NULL. Итак, перейдем к делу.

Знаки числа

Начнем с функции ABS(x), которая возвращает абсолютное значение переданного ей числа x. Пример:

SELECT ABS(-5) Результат: 5 SELECT ABS(5) Результат: 5

Знак числа можно определить с помощью функции SIGN(x). Функция возвращает -1 если x отрицательное число, 1 если положительное и 0 если x является нулем. Пример:

SELECT SIGN(-5) Результат: -1 SELECT SIGN(0) Результат: 0 SELECT SIGN(5) Результат: 1

Округление чисел

 Начнем с функции FLOOR(x). Возвращает ближайшее целое число не превышающее x. Пример:

SELECT FLOOR(5.5) Результат: 5 SELECT FLOOR(5.2) Результат: 5 SELECT FLOOR(5.7) Результат: 5 SELECT FLOOR(5) Результат: 5 SELECT FLOOR(-5.2) Результат: -6

Как видно, при задании любого положительного дробного числа от 5 до 6 возвращается целое число 5. А при передаче параметра -5.2 вернется -6, так как -6 меньше -5.2.

Обратное действие выполняет функция CEILING(x). Она возвращает ближайшее целое число, которое превышает переданный параметр x. Пример:

SELECT CEILING(5.5) Результат: 6 SELECT CEILING(5.2); Результат: 6 SELECT CEILING(5.7) Результат: 6 SELECT CEILING(5) Результат: 5 SELECT CEILING(-5.5) Результат: -5

Для округления дробного числа до ближайшего целого используется функция ROUND(x, d). Функция может принимать один или два параметра. Первый параметр x - число, которое необходимо округлить. Второй параметр d - целое число, определяющее разряд до которого необходимо округлить x.  В случае если передан один параметр x, то происходит просто округление до ближайшего целого. Например:

SELECT ROUND(50.45) Результат: 50 SELECT ROUND(50.76) Результат: 51

При значении аргумента, равного середине между двумя целыми числами, результат будет зависеть от конкретной СУБД, где используется язык SQL.

Если в функцию передан второй параметр, то после запятой останется столько знаков сколько указано в параметре. Например, если после запятой необходимо оставить один символ, то в качестве второго параметра указываем цифру 1:

SELECT ROUND(50.76, 1) Результат: 50,8

Существует возможность округлять число до любого разряда до запятой, для этого просто вторым параметром указываем отрицательное число. Например:

SELECT ROUND(251.55, -1) Результат: 250

В SQL еще имеется функция, которая не округляет, а отсекает десятичную часть дробного числа. Функция TRUNCATE(x, y) возвращает число x, усеченное до y десятичных знаков:

SELECT TRUNCATE(1.999, 1)

Результат: 1.9

SELECT TRUNCATE(1.999, 0)

Результат: 1

Функции выполняющие сложные математические операции

Начнем с самого простого. Функция MOD(x, y) возвращает остаток от деления на y. Например:

SELECT MOD(10, 3) Результат: 1

Следующая функция EXP(x), которая возвращает значение e (Число Эйлера) возведенное в степень x. Или научным языком, возвращает экспоненту числа. Пример:

SELECT EXP(3) Результат: 20.085536923187668

Далее рассмотрим функцию LOG(x), которая возвращает натуральный логарифм числа x. Пример:

SELECT LOG(10) Результат: 2.302585092994046

Для получения логарифма числа x, для произвольной основы логарифма y можно пользоваться формулой LOG(x)/LOG(y). Например:

SELECT LOG(8)/LOG(2) Результат: 3

Для получения десятичного логарифма числа x существует функция LOG10(x). Пример:

SELECT LOG10(100) Результат: 2

Для возведения в степень в языке SQL есть целых две функции: POW(x, y) и POWER(x, y). Возвращают число x возведенное в степень y. Пример:

SELECT POW(2, 3) Результат: 8 SELECT POWER(3, 2) Результат: 9

А функция SQRT(x) вычисляет квадратный корень числа x. Пример:

SELECT SQRT(16) Результат: 4

Чтобы использовать в своих вычисления число "пи" в SQL есть функция PI(), которая возвращает значение этого числа:

SELECT PI() Результат: 3.141593

Тригонометрические функции в языке SQL

Кратенько пройдемся по тригонометрическим функциям:

  • COS(x) - косинус угла x;
  • SIN(x) - синус угла x;
  • TAN(x) - тангенс угла x;
  • COT(x) - котангенс угла x.

Везде x задается в радианах. Примеры:

SELECT COS(PI()) Результат:  -1 SELECT SIN(PI()/2) Результат: 1 SELECT TAN(PI()/4) Результат: 1 SELECT COT(PI()/3) Результат: 0.577350269189626

Функции ACOS(x) и ASIN(x) вычисляют соответственно арккосинус и арксинус числа x, т.е. функции возвращают величину, косинус или синус которой равен x. При этом если значение не находится в диапазоне от -1 до 1, то функции возвращают NULL. Например:

SELECT ASIN(-1) Результат: -1.5707963267949 SELECT ACOS(-1) Результат: 3.14159265358979 SELECT ACOS(1.1) Результат: NULL

Функция ATAN(x) вычисляет арктангенс числа x, т.е. возвращает величину, тангенс которой равен x. Пример:

SELECT ATAN(3); Результат: 1.24904577239825

Для преобразования радиан в градусы и обратно используются функции DEGREES(x) и RADIANS(x) соответственно:

SELECT DEGREES(PI()) Результат: 180 SELECT RADIANS(180) Результат: 3.14

Случайные числа

Функция RAND(x) генерирует случайное значение в диапазоне от 0 до 1. Если указан аргумент x, то он используется как начальное значение этой величины. Пример:

SELECT RAND(); Результат:0.472241415009636 SELECT RAND(0.5); Результат: 0.943597390424144

На этом все. Вроде рассмотрел все часто используемые в SQL математические функции.