Иллюстрированный самоучитель по PostgreSQL

Правила использования операторов

Оператор работает с одним операндом или с двумя операндами. Большинство операторов работает с двумя операндами, между которыми ставится сам оператор (например, а-b). Такие операторы называются бинарными. Операторы, работающие с одним операндом, называются унарными; в этом случае оператор либо предшествует операнду, либо следует за ним (например, знак @ перед значением является унарным оператором, возвращающим модуль числа).

Некоторые операторы имеют несколько интерпретаций в зависимости от типа данных, к которым они применяются. С другой стороны, часть операторов не имеет смысла для некоторых типов данных (дополнительная информация о типах данных PostgreSQL приведена в главе 3).

Например, оператор сложения (+) может использоваться для суммирования двух целочисленных величии, но он не может прибавить целое число к текстовой строке. Считается, что такой вариант использования оператора дает неопределенный результат и потому является недопустимым. При этом сам оператор (в данном случае +) опознается нормально, но PostgreSQL выводит сообщение об ошибке (вроде того, что приведено в листинге 5.2).

Для примера рассмотрим таблицу authors, связывающую имена авторов с числовыми кодами.

Таблица "authors"
Атрибут | Тип | Модификатор
id | integer not null
lastjiame j text firstjname 1 text
Индекс: authors_pkey

Код автора id относится к типу integer (4-байтовое целое), а фамилия автора – к типу text. Поскольку поле id относится к числовому типу, оно может использоваться в качестве операнда математического оператора с другим числовым значением.

В листинге 5.1 приведен пример правильного использования оператора сложения (+).

Листинг 5.1. Правильное использование математического оператора.

booktown=# SELECT id 1 AS id_p1us_one. 1ast_name
booktown-# FROM authors
booktown-# ORDER BY id DESC LIMIT 5;
id_plus_one j last_name
25042 Bianco 15991 | Bourgeois
7807 | Christiansen
7806 | Lutz
4157 I King
(5 rows)

Попытка сложения несовместимых типов продемонстрирована в листинге 5.2.

Листинг 5.2. Неверное использование операторов.

booktown=# SELECT id + lastjiame AS mistake
booktown-# FROM authors:
ERROR: Unable to identify an operator '+' for types 'int4' and 'text'
You will have to retype this query using an explicit cast

К счастью, в сообщениях о недопустимом использовании операторов в PostgreSQL указывается причина ошибки. Эта информация поможет вам устранить ошибку и внести необходимые исправления в команду.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.