May 23rd 2024:
PostgreSQL 17 Beta 1 Released!

This documentation is for an unsupported version of PostgreSQL.

You may want to view the same page for the current version, or one of the other supported versions listed above instead.

You may want to view the same page for the current version, or one of the other supported versions listed above instead.

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(`

and * n*)

`bit varying(``n`

)

, where `n`

`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`

`bit`

without a length is equivalent to `bit(1)`

, while `bit varying`

without a length specification means unlimited length.If one explicitly casts a bit-string value to `bit(`

, it will be truncated or zero-padded on the right to be exactly * n*)

`n`

`bit varying(``n`

)

, it will be truncated on the right if it is more than `n`

Refer to Section 4.1.2.5 for information about the syntax of bit string constants. Bit-logical operators and string manipulation functions are available; see Section 9.6.

**Example 8.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`

A bit string value requires 1 byte for each group of 8 bits, plus 5 or 8 bytes overhead depending on the length of the string (but long values may be compressed or moved out-of-line, as explained in Section 8.3 for character strings).