# 9.6. Bit String Functions and Operators

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.13 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.13. 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 ``` . 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 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 will deliver only the least significant bit of the integer.

### Note

Casting an integer to ``` bit(n) ``` copies the rightmost ``` n ``` bits. Casting an integer to a bit string width wider than the integer itself will sign-extend on the left.