Bit strings are strings of 1's and 0's. They can be used to store or visualize bit masks. There are two SQL bit types: BIT(n) and BIT VARYING(n), where n is a positive integer.
BIT type data must match the length n exactly; it is an error to attempt to store shorter or longer bit strings. BIT VARYING data is of variable length up to the maximum length n; longer strings will be rejected. Writing BIT without a length is equivalent to BIT(1), while BIT VARYING without a length specification means unlimited length.
Note: If one explicitly casts a bit-string value to BIT(n), it will be truncated or zero-padded on the right to be exactly n bits, without raising an error. Similarly, if one explicitly casts a bit-string value to BIT VARYING(n), it will be truncated on the right if it is more than n bits.
Note: Prior to PostgreSQL 7.2, BIT data was always silently truncated or zero-padded on the right, with or without an explicit cast. This was changed to comply with the SQL standard.
Example 5-3. Using the bit string types
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) INSERT INTO test VALUES (B'10'::bit(3), B'101'); SELECT * FROM test; a | b -----+----- 101 | 00 100 | 101