Константы
Таблица 3.3. Служебные последовательности PostareSQL в стиле С.
Последовательность | Описание |
---|---|
\\ | Обратная косая черта (литерал) |
\' | Апостроф (литерал) |
\b | Забой |
\f | Подача листа |
\n | Новая строка |
\r | Возврат курсора |
\t | Табуляция |
\ххх | ASCII-символ с восьмеричным кодом ххх |
Внимание
Вследствие того что обратная косая черта имеет особый смысл (см. табл. 3.3), при включении в строку этот символ обязательно экранируется другой косой чертой (например, в строке 'A single backslash is: \\' двойной символ обратной косой черты преобразуется в один).
Если две строковые константы PostgreSQL разделены промежутком, в который входит хотя бы один символ новой строки, они объединяются в одну строковую константу. Пример приведен в листинге 3.5.
Листинг 3.5. Разбиение строковых констант.
booktown=# SELECT 'book' booktown-# booktown-# 'end' AS example; example bookend (1 row) booktown=# SELECT 'bookend' AS example; example bookend (1 row)
Обе команды имеют эквивалентную семантику. Тем не менее фрагменты должны разделяться хотя бы одним разрывом строки, а при попытке разделить их только пробелами PostgreSQL выдает сообщение об ошибке:
booktown=# SELECT 'book' 'end' AS example; ERROR: parser: parse error at or near…..
Дело в том, что без разрыва строки PostgreSQL считает, что вы ссылаетесь на две отдельные константы. Объединение двух строковых констант в одной строке выполняется оператором конкатенации 11, описанным в главе 5:
booktown=# SELECT 'book.' || 'end1 AS example; example bookend (1 row)
Битовые последовательности
Битовые последовательности предназначены для представления двоичных величин в виде произвольной последовательности нулей и единиц. Как и строковые константы, битовые последовательности заключаются в апострофы, но начинаются с обязательного префикса В (в верхнем или нижнем регистре). По наличию этого символа PostgreSQL определяет, что строка является битовой последовательностью, а не обычной символьной строкой.
В соответствии с синтаксисом PostgreSQL открывающий апостроф должен следовать сразу же после префикса В, а битовая последовательность не может содержать других символов, кроме 0 и 1. Внутренние пробелы в битовых последовательностях запрещены, но допускается их разбиение по аналогии с обычными строковыми константами (см. выше пункт "Строковые константы).
Битовые строки обычно требуются только при работе с двоичными функциями и таблицами, содержащими двоичные данные. В листинге 3.6 продемонстрирована вставка битовой последовательности в таблицу. Сначала двоичное представление байта сохраняется в таблице my_bytes, а затем результат операции проверяется простым запросом.
Листинг 3.6. Использование битовых последовательностей.
testdiH* INSERT INTO my_bytes VALUES (B'OOOOOOOO'): testdb=# SELECT my_byte FROM my_bytes: my_byte 10000000 10000001 10000101 11111111 00000000 (5 rows)