# 9.6. 二元字串函式及運算子

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 inTable 9.13can 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 followingSQL-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.

Edit on GitHub