This section describes functions and operators for examining and
manipulating bit strings, that is values of the types
bit
and bit varying
. Aside from the
usual comparison operators, the operators
shown in Table 9.10, “Bit String Operators” can be used.
Bit string operands of &
, |
,
and #
must be of equal length. When bit
shifting, the original length of the string is preserved, as shown
in the examples.
Table 9.10. Bit String Operators
Operator | Description | Example | Result |
---|---|---|---|
|| |
concatenation | B'10001' || B'011' |
10001011 |
& |
bitwise AND | B'10001' & B'01101' |
00001 |
| |
bitwise OR | B'10001' | B'01101' |
11101 |
# |
bitwise XOR | B'10001' # B'01101' |
11100 |
~ |
bitwise NOT | ~ B'10001' |
01110 |
<< |
bitwise shift left | B'10001' << 3 |
01000 |
>> |
bitwise shift right | B'10001' >> 2 |
00100 |
The following SQL-standard functions work on bit
strings as well as character strings:
,
length
,
bit_length
,
octet_length
,
position
.
substring
In addition, it is possible to cast integral values to and from type
bit
.
Some examples:
44::bit(10) 0000101100 44::bit(3) 100 cast(-44 as bit(12)) 111111010100 '1110'::bit(4)::integer 14
Note that casting to just “bit” means casting to
bit(1)
, and so it will deliver only the least significant
bit of the integer.
Prior to PostgreSQL 8.0, casting an
integer to bit(n)
would copy the leftmost n
bits of the integer, whereas now it copies the rightmost n
bits. Also, casting an integer to a bit string width wider than
the integer itself will sign-extend on the left.