PostgreSQL 9.0.4 中文文档 | ||||
---|---|---|---|---|
Prev | Fast Backward | Chapter 9. 函数和操作符 | Fast Forward | Next |
本节描述用于检查和操作位串的函数和操作符,也就是操作类型为bit和bit varying 值的函数和操作符。除了常用的比较操作符之外,还可以使用Table 9-10显示的 操作符&,|和#的位串操作数必须等长。在移位的时候,保留原始的位串长度(并以0填充),如例所示。
Table 9-10. 位串操作符
操作符 | 描述 | 示例 | 结果 |
---|---|---|---|
|| | 连接 | 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
,
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: 在PostgreSQL8.0以前,把一个整数转换成bit(n) 将拷贝整数的最左边的n位,而现在是拷贝最右边的n位。 还有,把一个整数转换成比整数本身长的位串,就会扩展最左边的位(非负数为0,负数为1)。