Числовые операторы
Числовые операторы PostgreSQL делятся на три категории.
- Математические операторы выполняют математическую операцию с одним или двумя операндами и возвращают значение числового типа.
- Операторы сравнения проверяют заданное соотношение между двумя числовыми величинами (например, что одна величина больше другой) и возвращают результат проверки в виде типа boolean.
- Двоичные операторы работают на уровне отдельных битов, то есть единиц и нулей в двоичном представлении.
Ниже приведены более подробные описания по всем трем категориям.
Математические операторы
Математические операторы используются в целевых списках, в секции WHERE команды SELECT и вообще везде, где встречаются числовые данные.
В табл. 5.4 перечислены математические операторы PostgreSQL и приведены примеры их использования.
Таблица 5.4. Математические операторы.
Оператор | Синтаксис | Описание |
---|---|---|
+ | а + b | Суммирование числовых величин а и b |
- | а – b | Вычитание числовой величины b из а |
* | а * b | Умножение числовых величин а и b |
/ | а / b | Деление числовой величины а на b |
% | а % b | Остаток от деления а на b |
^ | а ^ b | Возведение а в степень b |
|/ | !/ а | Квадратный корень из а |
II/ | ||/ а | Кубический корень из b |
! | а! | Факториал а |
!! | !! а | Факториал а (отличается от постфиксного оператора только расположением) |
@ | @ а | Модуль (абсолютное значение) а |
Пример использования математических операторов в целевом списке приведен в листинге 5.9. Оператор / используется для вычисления удельной прибыли по каждой книги. Частное от деления преобразуется к типу numeriс с усечением до двух цифр в дробной части. Наконец, из результата вычитается целочисленная константа 1, чтобы результат выражался в процентах свыше 100.
Листинг 5.9. Использование математических операторов.
booktown=# SELECT isbn, booktown-# (retail / cost)::numeric(3, 2) – 1 AS margin booktown-# FROM stock booktowri-# ORDER BY margin DESC booktown-# LIMIT 4; isbn | margin 0451457994 | 0.35 0760720002 | 0.33 0451198492 0.30 0441172717 | 0.29 (4 rows)
Обратите внимание на определение временного псевдонима margin при помощи ключевого слова AS. Псевдоним представляет собой временное имя, которое существует только во время обработки запроса.