As cadeias de bits são cadeias de zeros e uns. Podem ser usadas para armazenar ou visualizar máscaras de bits. Existem dois tipos de dado para bits no SQL: bit(n) e bit varying(n), onde n é um número inteiro positivo.
Os dados para o tipo bit devem possuir exatamente o comprimento n; é errado tentar armazenar cadeias de bits mais curtas ou mais longas. 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 equivale a escrever bit(1), enquanto bit varying sem a especificação do comprimento significa comprimento ilimitado.
Nota: Se for feita uma conversão explícita do valor de uma cadeia de bits para bit(n), os bits serão truncados ou completados à direita com zeros para ficar exatamente com n bits, sem ocasionar erro. De forma semelhante, se for feita uma conversão explícita do valor de uma cadeia de bits para bit varying(n), os bits serão truncados à direita se houver mais de n bits.
Nota: Antes do PostgreSQL 7.2, os dados do tipo bit eram sempre truncados em silêncio ou completados à direita com zeros, com ou sem uma conversão explícita. Este comportamento foi modificado para ficar em conformidade com o padrão SQL.
Consulte a Seção 4.1.2.3 para obter informações sobre a sintaxe das constantes do tipo cadeia de bits. Estão disponíveis operadores lógicos para bit e funções para manipulação de cadeias de bits; consulte o Capítulo 9.
Exemplo 8-9. Utilização dos tipos para 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'); ERRO: comprimento da cadeia de bits 2 não corresponde ao tipo bit(3) INSERT INTO teste VALUES (B'10'::bit(3), B'101'); SELECT * FROM teste; a | b -----+----- 101 | 00 100 | 101