5.9. Tipos para cadeias de bits

Cadeias de bits são cadeias contendo apenas dígitos 1 e 0. Podem ser armazenadas ou visualizar máscaras de bits. Existem dois tipos de dado SQL para bits: BIT(n) e BIT VARYING(n), onde n é um número inteiro positivo.

O tipo de dado BIT deve corresponder ao tamanho n exatamente; ocasiona erro tentar armazenar uma cadeia de bits mais curta ou mais longa. O tipo de dado BIT VARYING possui um comprimento variável até o máximo de n; cadeias mais longas são rejeitadas. Escrever BIT sem o comprimento é equivalente a escrever BIT(1), enquanto BIT VARYING sem a especificação do comprimento significa comprimento ilimitado.

Nota: Se for feita uma transformação explícita do valor de uma cadeia de bits para BIT(n), os bits serão truncados ou preenchidos à direita com zeros para ficar exatamente com n bits, sem ocasionar erro. De forma semelhante, se for feita uma transformação explícita do valor de uma cadeia de bits para BIT VARYING(n), os bits serão truncados à direita caso existam mais de n bits.

Nota: Antes do PostgreSQL 7.2, os dados do tipo BIT eram sempre truncados ou completados à direita com zeros, com ou sem uma transformação explícita. Este comportamento foi modificado para ficar de acordo com o padrão SQL.

Consulte a Seção 1.1.2.2 para obter informações relativas à sintaxe das constantes cadeias de bits. Operadores lógicos para bit e funções de manipulação de cadeias estão disponíveis; veja o Capítulo 6.

Exemplo 5-3. Utilização dos tipos cadeia de bits

CREATE TABLE teste (a BIT(3), b BIT VARYING(5));
INSERT INTO teste VALUES (B'101', B'00');
INSERT INTO teste VALUES (B'10', B'101');
ERROR:  Bit string length 2 does not match type BIT(3)
INSERT INTO teste VALUES (B'10'::bit(3), B'101');
SELECT * FROM teste;
  a  |  b
-----+-----
 101 | 00
 100 | 101