Типы битовых строк

Битовые строки — это строки, состоящие из 1 и 0. Их можно использовать для хранения или визуализации битовых масок. В SQL существует два типа битовых строк: bit(n) и bit varying(n), где n — это положительное целое число.

Данные типа bit должны точно соответствовать длине n; попытка сохранить более короткие или более длинные битовые строки приведет к ошибке. Данные типа bit varying имеют переменную длину вплоть до максимальной длины n; более длинные строки будут отклонены. Запись bit без указания длины равнозначна bit(1), тогда как bit varying без указания длины означает неограниченную длину.

Примечание
Если явно привести значение битовой строки к типу bit(n), оно будет усечено или дополнено нулями справа до длины ровно n битам, не приводя к ошибке. Аналогичным образом, если явно привести значение битовой строки к типу bit varying(n), она будет усечено справа, если ее длина превышает n бит.

Информацию о синтаксисе констант битовых строк см. в подразделе Константы битовых строк. Доступные битовые логические операторы и функции обработки строк описаны в разделе Функции и операторы битовых строк.

Пример 3. Использование типов битовых строк

CREATE TABLE test (a BIT(3), b BIT VARYING(5));
INSERT INTO test VALUES (B'101', B'00');
INSERT INTO test VALUES (B'10', B'101');

ERROR:  bit string length 2 does not match type bit(3)
-- ОШИБКА: длина битовой строки 2 не соответствует типу bit(3)

INSERT INTO test VALUES (B'10'::bit(3), B'101');
SELECT * FROM test;

  a  |  b
-----+-----
 101 | 00
 100 | 101

Для хранения битовых значений требуется по 1 байту для каждой группы из 8 бит, плюс 5 или 8 байт дополнительно в зависимости от длины строки (но длинные значения могут быть сжаты или вынесены за пределы строки, как описано в разделе Символьные типы применительно к символьным строкам).