选择 打开 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

受支持版本: 当前版本 (18) / 17 / 16 / 15 / 14
测试与开发版本: 19 / devel
不受支持的版本: 13 / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0
历史版本PostgreSQL 9.0 已于 2015 年 10 月结束社区维护,本页译文保留供仍在使用旧版本的读者参考。新系统请看当前版本

9.6. 位串函数和操作符 #

本节描述用于检查和操作位串的函数和操作符,也就是 bitbit varying 类型的值。除常用比较操作符外,还可使用表 9.11中的操作符。&|# 的位串操作数长度必须相同。移位时会保留字符串的原始长度,如示例所示。

表 9.11. 位串操作符

Operator 描述 示例 Result
|| 串接 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 标准函数既适用于位串,也适用于字符串:lengthbit_lengthoctet_lengthpositionsubstringoverlay

以下函数既适用于位串,也适用于二进制串:get_bitset_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),因此只会得到该整数的最低有效位。

注意

PostgreSQL 8.0 之前,把整数转换为bit(n)会复制该整数最左边的n位,而现在复制的是最右边的n位。此外,把整数转换为比该整数本身更宽的位串时,会在左侧进行符号扩展。

提交更正

译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。