8.10. Tipos de dados de cadeia de bits #

Cadeias de bits são cadeias de 1's e 0's. Podem ser usadas para armazenar ou visualizar máscaras de bits. Existem dois tipos de dados cadeia de bits no padrão SQL: bit(n) e bit varying(n), onde n é um número inteiro positivo.

Os dados do tipo de dados bit devem corresponder exatamente ao comprimento n; causa erro tentar armazenar cadeias de bits mais curtas ou mais longas. O tipo de dados bit varying possui um comprimento variável de até no máximo n bits; cadeias mais longas são rejeitadas. Escrever bit sem especificar o comprimento equivale a escrever bit(1), enquanto escrever bit varying sem especificar o comprimento significa um comprimento ilimitado.

Nota

Se for feita a conversão do valor de uma cadeia de bits para bit(n), a cadeia será truncada ou preenchida com zeros à direita até o tamanho exato de n bits, sem causar erro. De forma análoga, se for feita a conversão do valor de uma cadeia de bits para bit varying(n), essa cadeia será truncada à direita se tiver mais de n bits.

Veja a Seção 4.1.2.5 para obter informações sobre a sintaxe das constantes cadeia de bits. Estão disponíveis operadores lógicos de bits e funções de tratamento de cadeias de bits; veja a Seção 9.6.

Exemplo 8.13. Usando os tipos de dados de cadeias de bits

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');
ERRO:  tamanho da cadeia de bits 2 não corresponde ao tipo bit(3)
INSERT INTO test VALUES (B'10'::bit(3), B'101');

SELECT * FROM test;
  a  |  b
-----+-----
 101 | 00
 100 | 101

Um valor de cadeia de bits requer 1 byte para cada grupo de 8 bits, mais 5 ou 8 bytes extras dependendo do comprimento da cadeia (mas valores longos podem ser comprimidos ou movidos para fora da linha da tabela, conforme explicado na Seção 8.3 para as cadeias de caracteres).