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

Рубрика: SQL
28 ноября 2014

Здравствуйте, уважаемые читатели блога 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 математические функции. Возможно вам будет интересно узнать и о функциях обработки строк в SQL.

До новых встреч!

(3 оценок, среднее: 5,00 из 5)
Loading...

Получай статьи почтой:


Комментарии
  1. Reflective vest

    Это действительно здорово и полезно часть информации. Я удовлетворен тем, что вы просто поделился этой полезной информацией с нами.

    4 марта 2016 07:16
  2. Сергей

    SELECT CEILING (5) Результат: 6

    на самом деле должно быть Результат: 5 !!!

    29 августа 2016 12:09
  3. alex

    да, закралась ошибка... исправил, спасибо!

    30 августа 2016 01:10
  4. Natalia

     

    SELECT TRUNCATE (1.999, 1)

    Результат: 1

     должно быть SELECT TRUNCATE (1.999, 0)

    21 декабря 2016 22:01
  5. alex

    Спасибо, поправил

    22 декабря 2016 00:01
  6. Дима

    SELECT ROUND (251.55, -1)

    Результат: 250 — ОК, а как сделать 25?

    23 января 2020 10:02

Оставить комментарий




Subscribe without commenting