PostgreSQL 9.1.24 Documentation | ||||
---|---|---|---|---|
Prev | Up | Chapter 9. Functions and Operators | Next |
This section describes functions and operators for examining and manipulating bit strings, that is values of the typesbit andbit varying. Aside from the usual comparison operators, the operators shown inTable 9-11 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-11. 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 functions work on bit strings as well as binary strings:get_bit
,set_bit
. When working with a bit string, these functions number the first (leftmost) bit of the string as bit 0.
In addition, it is possible to cast integral values to and from typebit. Some examples:
44::bit(10)000010110044::bit(3)100cast(-44 as bit(12))111111010100'1110'::bit(4)::integer14
Note that casting to just"bit" means casting tobit(1), and so will deliver only the least significant bit of the integer.
Note: Prior toPostgreSQL 8.0, casting an integer tobit(n) would copy the leftmostn bits of the integer, whereas now it copies the rightmostn bits. Also, casting an integer to a bit string width wider than the integer itself will sign-extend on the left.