Числовые операторы
Двоичные операторы
Двоичные операторы выполняют поразрядные операции с битовыми последовательностями или целыми числами, что обычно приводит к изменению их значений. Двоичные операторы PostgreSQL перечислены в табл. 5.6.
Таблица 5.6. Двоичные операторы.
Оператор | Синтаксис | Описание |
---|---|---|
& | а & b | Поразрядная конъюнкция двоичных представлений а и b (которые могут быть заданы в виде целых чисел) |
| | а | b | Поразрядная дизъюнкция двоичных представлений а и b (которые могут быть заданы в виде целых чисел) |
# | а # b | Поразрядная операция исключающей дизъюнкции двоичных представлений а и b (которые могут быть заданы в виде целых чисел) |
- | -b | Поразрядное отрицание, возвращает инвертированную битовую последовательность b |
<< | b << n | Сдвиг b влево на n разрядов |
>> | b >> n | Сдвиг b вправо на n разрядов |
В листинге 5.13 приведен пример сдвига числа и его двоичного представления на два разряда вправо оператором ". Кроме того, в нем используется функция преобразования битовой последовательности в целочисленный тип bitten nt4(), описанная в разделе "Функции".
Листинг 5.13. Сдвиг битовых последовательностей.
booktown=# SELECT b'1000' >> 2 AS "8 SHIFTed right". booktown-# Mttoint4(b'1000' >> 2) AS integer. booktown-# 8 >> 2 AS likewise; 8 SHIFTed right | integer | likewise 0010 I 2 I 2 (1 row)
Примечание
При сдвиге битовых последовательностей исходная длина строки не изменяется, а разряды, выходящие за левый или правый край последовательности, отсекаются. При использовании операторов &, | или # битовые операнды должны иметь одинаковую длину.