位串函数和操作符 ===================== 本节描述用于检查和操作位串的函数和操作符,也就是操作类型为 bit 和 bit varying 值的函数和操作符。除了常用的比较操作符之外, 还可以使用下表里显示的操作符。 &, \|,# 的位串操作数必须等长。在移位的时候,保留原始的位串长度,如例子所示。 **表.位串操作符** .. list-table:: :widths: auto :header-rows: 1 * - 操作符 - 描述 - 例子 - 结果 * - || - 连接 - 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。另外,我们可以在整数和 bit 之间来回转换。例子: :: 44::bit(10) 0000101100 44::bit(3) 100 cast(-44 as bit(12)) 111111010100 '1110'::bit(4)::integer 14 请注意,只是转换为 "bit" 的意思是转换成 bit(1),因此只会转换成整数的最低位。