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