9th May 2019: PostgreSQL 11.3, 10.8, 9.6.13, 9.5.17, and 9.4.22 Released!

Development Versions:
devel

PostgreSQL 9.3.25 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 types `bit` and `bit varying`. Aside from
the usual comparison operators, the operators shown in Table
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 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.