PostgreSQL 9.0.0 Documentation | ||||
---|---|---|---|---|

Prev | Fast Backward | Chapter 9. Functions and Operators | Fast Forward | Next |

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

`overlay`

The following functions work on bit strings as well as binary
strings:
` get_bit`,

`set_bit`

In addition, it is possible to cast integral values to and from type
`bit`.
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 to
`bit(1)`, and so will deliver only the least significant
bit of the integer.

Note:Prior to PostgreSQL 8.0, casting an integer tobit(n)would copy the leftmostnbits of the integer, whereas now it copies the rightmostnbits. Also, casting an integer to a bit string width wider than the integer itself will sign-extend on the left.