Математические операторы предусмотрены для многих СУБД PostgreSQL типов данных. Для типов данных, не имеющих общепринятых математических правил (например, типов даты и времени), фактическое поведение описывается в последующих разделах.
Таблица 2.6.4 представлены математические операторы, доступные для стандартных числовых типов. Если не указано иное, операторы, принимающие numeric_type доступны для всех
типов данных smallint, integer,
bigint, numeric, real,
и double precision.
Операторы, для которых указано, что они принимают integral_type
доступны для типов данных smallint, integer,
и bigint. За исключением особо оговоренных случаев, каждая форма оператора возвращает тот же тип данных, что и его аргументы. Вызовы, включающие несколько типов данных аргументов, такие как integer + numeric,
разрешаются с использованием типа данных, указанного в данных списках позже.
Таблица 2.6.4. Математические операторы
Оператор Описание Примеры |
|---|
Сложение
|
Унарный плюс (без действия)
|
Вычитание
|
Отрицание (унарный минус)
|
Умножение
|
Операция деления (для целочисленных типов результат деления усекается в сторону нуля)
|
Оператор вычисления остатка от деления (modulo); доступен для
|
Оператор возведения в степень
В отличие от общепринятой математической практики, при многократном использовании
|
Квадратный корень
|
Кубический корень
|
Абсолютное значение
|
Побитовое И (AND)
|
Побитовое ИЛИ (OR)
|
Побитовое исключающее ИЛИ (XOR)
|
Побитовое НЕ (NOT)
|
Побитовый сдвиг влево
|
Побитовый сдвиг вправо
|
Таблица 2.6.5 В таблице представлены доступные математические функции. Многие из данных функций реализованы в нескольких формах с различными типами аргументов. Если не указано иное, любая форма функции возвращает тот же тип данных, что и её аргумент или аргументы; случаи обработки различных типов данных разрешаются так же, как описано выше для операторов. Функции, работающие с double precision реализация данных в основном опирается на библиотеку C хост-системы; точность и поведение в граничных случаях могут варьироваться в зависимости от хост-системы.
Таблица 2.6.5. Математические функции
Таблица 2.6.6 приведены функции для генерации случайных чисел.
Таблица 2.6.6. Функции генерации случайных чисел
Функции, random() и random_normal()
перечисленные в Таблица 2.6.6 используют детерминированный генератор псевдослучайных чисел. Он обладает высоким быстродействием, но не подходит для криптографических приложений; см. pgcrypto модуль для поиска более
безопасной альтернативы.
Если setseed() вызывается, то последовательность результатов последующих вызовов этих функций в текущем сеансе можно повторить путем повторного выполнения setseed() с тем же самым
аргументом.
Без предварительного setseed() вызов в рамках того же сеанса; при первом вызове любой из этих функций получается начальное значение (seed) из зависящего от платформы источника случайных битов.
Таблица 2.6.7 приведены доступные тригонометрические функции. Каждая из этих функций представлена в двух вариантах: один измеряет углы в радианах, а другой — функция degrees измеряет углы в градусах.
Таблица 2.6.7. Тригонометрические функции
Для работы с углами, измеряемыми в градусах, можно также использовать функции преобразования единиц измерения
и radians() которые были описаны выше. Тем не менее, рекомендуется использовать специальные тригонометрические функции для градусов, поскольку это позволяет избежать ошибок округления в таких частных случаях, как degrees()sind(30).
Таблица 2.6.8 приведены доступные гиперболические функции.
Таблица 2.6.8. Гиперболические функции