On this page
9.6. 位字符串函数和运算符
本节介绍用于检查和操作位字符串(即bit
和bit varying
类型的值)的函数和运算符。除了通常的比较运算符外,还可以使用Table 9.13中所示的运算符。 &
,|
和#
的位串操作数必须具有相等的长度。如示例所示,当进行位移时,将保留字符串的原始长度。
表 9.13. 位字符串运算符
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 |
<< |
左移 | B'10001' << 3 |
01000 |
>> |
右移 | B'10001' >> 2 |
00100 |
以下 SQL 标准函数对位字符串和字符串均起作用:length
,bit_length
,octet_length
,position
,substring
,overlay
。
以下函数适用于位字符串和二进制字符串:get_bit
,set_bit
。当使用位字符串时,这些函数将字符串的第一(最左边)位编号为位 0.
此外,可以在bit
类型之间进行整数值转换。一些例子:
44::bit(10) 0000101100
44::bit(3) 100
cast(-44 as bit(12)) 111111010100
'1110'::bit(4)::integer 14
请注意,仅转换为“ bit”意味着转换为bit(1)
,因此将仅传递整数的最低有效位。
Note
将整数强制转换为bit(n)
将复制最右边的n
位。将整数转换为比整数本身宽的位字符串宽度将在左侧符号扩展。