位串函数和操作符

From PostgreSQL 中文维基, PostgreSQL 中文站, PostgreSQL 中国社区, PostgreSQL Chinese community

Jump to: navigation, search

[编辑] 位串函数和操作符

本节描述用于检查和操作位串的函数和操作符,也就是操作类型为 bit 和 bit varying 的数值的函数和操作符。除了常用的比较操作符之外,还可以使用表 9-10 里显示的操作符。 &,|,和 # 的位串操作数必须等长。 在移位的时候,保留原始的位串的的长度,如例子所示。

表 9-10. 位串操作符
操作符 描述 例子 结果
|| 连接 B'10001' || B'011' 10001011
& 按位 AND(与) B'10001' & B'01101' 00001
| 按位 OR(或) B'01101' 11101
# 按位 XOR(异或) B'10001' # B'01101' 11100
~ 按位 NOT(非) ~ B'10001' 01110
<< 按位左移 B'10001' << 3 01000
>> 按位右移 B'10001' >> 2 00100

下面的 SQL 标准函数除了可以用于字符串之外,也可以用于位串:length,bit_length,octet_length,position,substring。

另外,我们可以在整数和 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 位。还有,把一个整数转换成比整数本身长位串,就会在最左边扩展符号。
Personal tools