## # 8.10. Bit String Types

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 *; longer strings will be rejected. Writing*

`n`

`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 *bits.*

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