PostgreSQL 9.4.4 中文手册
上一页 | 上一级 | 章 9. 函数和操作符 | 下一页

# 9.6. 位串函数和操作符

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

表 9-11. 位串操作符

操作符 | 描述 | 例子 | 结果
--- | --- | --- | ---
`||` | 连接 | `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)`，因此只会转换成整数的最低位。

> 注意: 将整数转换成`bit(n)`拷贝了最右边的`n`位。 将一个整数转换成比它宽一些的位字符串将在左边符号扩展。

上一页 | 起始页 | 下一页
二进制字符串函数和操作符 | 上一级 | 模式匹配