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.14
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.14. 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
.
When working with a bit string, these functions number the first
(leftmost) bit of the string as bit 0.
set_bit
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.