历史版本。 PostgreSQL 9.6 已结束支持。 2021-11-11. 请参阅 当前版本手册.
9.6. 位串函数和操作符 #
本节描述用于检查和操作位串的函数和操作符,也就是 bit 和 bit varying 类型的值。除常用比较操作符外,还可使用表 9.13中的操作符。&、| 和 # 的位串操作数长度必须相同。移位时会保留字符串的原始长度,如示例所示。
表 9.13. 位串操作符
| 操作符 | 描述 | 示例 | 结果 |
|---|---|---|---|
|| | 串接 | B'10001' || B'011' | 10001011 |
& | 按位与 | B'10001' & B'01101' | 00001 |
| | 按位或 | B'10001' | B'01101' | 11101 |
# | 按位异或 | B'10001' # B'01101' | 11100 |
~ | 按位非 | ~ B'10001' | 01110 |
<< | 按位左移 | B'10001' << 3 | 01000 |
>> | 按位右移 | B'10001' >> 2 | 00100 |
以下 SQL 标准函数既适用于位串,也适用于字符串:、length、bit_length、octet_length、position、substring。overlay
以下函数既适用于位串,也适用于二进制串:、get_bit。处理位串时,这些函数将字符串的第一位(最左侧的位)编号为位 0。set_bit
此外,还可以在整数值与bit类型之间进行类型转换。例如:
44::bit(10) 0000101100 44::bit(3) 100 cast(-44 as bit(12)) 111111010100 '1110'::bit(4)::integer 14
注意,仅转换为“bit”意味着转换为bit(1),因此只会得到该整数的最低有效位。
注意
将整数转换为 bit(n) 会复制最右侧的 n 位。将整数转换为宽度大于该整数自身的位串时,会在左侧进行符号扩展。