Оператор работает с одним операндом или с двумя операндами. Большинство операторов работает с двумя операндами, между которыми ставится сам оператор (например, a + b). Такие операторы называются бинарными. Операторы, работающие с одним операндом, называются унарными; в этом случае оператор либо предшествует операнду, либо следует за ним.
Некоторые операторы имеют несколько интерпретаций в зависимости от типа данных, к которым они применяются. С другой стороны, часть операторов не имеет смысла для некоторых типов данных.
Например, оператор сложения (+) может использоваться для суммирования двух целочисленных величин, но он не может прибавить целое число к текстовой строке. В сообщениях о недопустимом использовании операторов в PostgreSQL указывается причина ошибки. Эта информация поможет устранить ошибку и внести необходимые исправления в команду.
П.5.2. Строковые операторы
Операторы сравнения строк
= Возвращает true, если первая строка точно совпадает со второй
!= Возвращает true, если первая строка не совпадает со второй
<> Идентичен оператору !=
< Возвращает true, если при лексикографической сортировке первая строка предшествует второй
<= Возвращает true, если при лексикографической сортировке первая строка предшествует второй или их значения совпадают
> Возвращает true, если при лексикографической сортировке вторая строка предшествует первой
>= Возвращает true, если при лексикографической сортировке вторая строка предшествует первой или их значения совпадают
Все операторы сравнения строк возвращают логическое значение (true или false). Лексикографическая сортировка последовательно сравнивает символы строк и определяет, какой из символов "больше" другого. Если начальные символы двух строк совпадают, проверяются следующие символы (слева направо). Перебор продолжается до тех пор, пока не будут найдены два различающихся символа. В этом алгоритме сортировки "больший" символ выбирается сравнением ASCII-кодов.
Конкатенация
Оператор конкатенации или, другими словами, оператор слияния (||) играет важную роль при форматировании выходных данных. Он может использоваться в командах SQL всюду, где могут использоваться константы. Допускается последовательная конкатенация строковых значений, для этого перечисляемые строковые константы или идентификаторы разделяются операторами ||.
Например,
SELECT 'The Title: ' || title ||
', by ' || first_name || ' ' || last_name
FROM books, authors
WHERE books.author_id = authors.id;
П.5.3. Числовые операторы
Числовые операторы PostgreSQL делятся на три категории:
· Математические операторы выполняют математическую операцию с одним или двумя операндами и возвращают значение числового типа.
· Операторы сравнения проверяют заданное соотношение между двумя числовыми величинами (например, что одна величина больше другой) и возвращают результат проверки в виде типа boolean.
· Двоичные операторы работают на уровне отдельных битов, то есть единиц и нулей в двоичном представлении.
Математические операторы
Математические операторы используются в целевых списках, в секции WHERE команды SELECT и вообще везде, где встречаются числовые данные.
Оператор Синтаксис Описание
+ a+b Суммирование числовых величин a и b
- a-b Вычитание числовой величины b из a
* a*b Умножение числовых величин a и b
/ a/b Деление числовой величины a на b
% a%b Остаток от деления a на b
^ a^b Возведение a в степень b
|/ |/a Квадратный корень из a
||/ ||/a Кубический корень из a
! a! Факториал a
!! !!a Факториал a (отличается от постфиксного оператора только расположением)
@ @a Модуль (абсолютное значение) a
Например, вычислим удельную прибыль по каждой книге. Частное от деления преобразуем к типу numeric с усечением до двух цифр в дробной части. Из результата вычтем единицу, чтобы результат выражался в доле меньше 1.
SELECT isbn,
(retail/cost)::numeric(3.2)-1 AS margin
FROM stock
ORDER BY margin DESC;
Операторы сравнения
Операторы сравнения работают со значениями таких типов, как integer или text, но всегда возвращают результат типа boolean. Они часто встречаются в секции WHERE, но могут использоваться в любом контексте, в котором действителен тип boolean.
< Возвращает true, если левое значение меньше правого
> Возвращает true, если левое значение больше правого
<= Возвращает true, если левое значение меньше правого или равно ему
>= Возвращает true, если левое значение больше правого или равно ему
= Возвращает true, если левое значение равно правому
<> или != Возвращает true, если левое значение не равно правому
Дата: 2019-02-19, просмотров: 219.