9.3. Математические функции и операторы
Математические операторы определены для множества типов PostgreSQL. Как работают эти операции с типами, для которых нет стандартных соглашений о математических действиях (например, с типами даты/времени), мы опишем в последующих разделах.
В Таблице 9.2 перечислены все доступные математические операторы.
Таблица 9.2. Математические операторы
Оператор | Описание | Пример | Результат |
---|---|---|---|
+ | сложение | 2 + 3 | 5 |
- | вычитание | 2 - 3 | -1 |
* | умножение | 2 * 3 | 6 |
/ | деление (при целочисленном делении остаток отбрасывается) | 4 / 2 | 2 |
% | остаток от деления | 5 % 4 | 1 |
^ | возведение в степень (вычисляется слева направо) | 2.0 ^ 3.0 | 8 |
|/ | квадратный корень | |/ 25.0 | 5 |
||/ | кубический корень | ||/ 27.0 | 3 |
! | факториал (устаревший оператор, его заменяет функция factorial() ) | 5 ! | 120 |
!! | факториал в префиксной форме (устаревший оператор, его заменяет функция factorial() ) | !! 5 | 120 |
@ | модуль числа (абсолютное значение) | @ -5.0 | 5 |
& | битовый AND | 91 & 15 | 11 |
| | битовый OR | 32 | 3 | 35 |
# | битовый XOR | 17 # 5 | 20 |
~ | битовый NOT | ~1 | -2 |
<< | битовый сдвиг влево | 1 << 4 | 16 |
>> | битовый сдвиг вправо | 8 >> 2 | 2 |
Битовые операторы работают только с целочисленными типами данных и с битовыми строками bit
и bit varying
, как показано в Таблице 9.11.
В Таблице 9.3 перечислены все существующие математические функции. Сокращение dp
в ней обозначает тип double precision
(плавающее с двойной точностью). Многие из этих функций имеют несколько форм с разными типами аргументов. За исключением случаев, где это указано явно, любая форма функции возвращает результат того же типа, что и аргумент. Функции, работающие с данными double precision
, в массе своей используют реализации из системных библиотек сервера, поэтому точность и поведение в граничных случаях может зависеть от системы сервера.
Таблица 9.3. Математические функции
В Таблице 9.4 перечислены все функции для генерации случайных чисел.
Таблица 9.4. Случайные функции
Характеристики значений, возвращаемых функцией
зависят от системы. Для применения в криптографии они непригодны; альтернативы описаны в pgcrypto.random()
Наконец, в Таблице 9.5 перечислены все тригонометрические функции. Все эти функции принимают аргументы и возвращают значения типа double precision
. Аргументы тригонометрических функций выражаются в радианах. Также в радианах выражаются результаты обратных функций. Для преобразования единиц могут быть полезны упомянутые выше функции
и radians()
.degrees()
Таблица 9.5. Тригонометрические функции