=====================  位串函数和操作符 ===================== .. container:: sect1 :name: FUNCTIONS-BITSTRING .. container:: titlepage .. container:: .. container:: .. rubric:: 位串函数和操作符 :name: 位串函数和操作符 :class: title 本节描述用于检查和操作位串的函数和操作符,也就是操作类型为\ ``bit``\ 和\ ``bit varying``\ 的值的函数和操作符。除了常用的比较操作符之外,还可以使用\ `表 `__\ 里显示的操作符。\ ``&``\ 、\ ``|``\ 和\ ``#``\ 的位串操作数必须等长。在移位的时候,保留原始的位串的的长度,如例子所示。 .. container:: table :name: FUNCTIONS-BIT-STRING-OP-TABLE **表 位串操作符** .. container:: table-contents ====== ======== ======================= ============ 操作符 描述 例子 结果 ====== ======== ======================= ============ ``||`` 连接 ``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``\ 之间来回转换。一些例子: .. code:: programlisting 44::bit(10) 0000101100 44::bit(3) 100 cast(-44 as bit(12)) 111111010100 '1110'::bit(4)::integer 14 请注意,如果只是转换为“bit”,意思是转换成\ ``bit(1)``\ ,因此只会转换整数的最低有效位。 .. note:: .. rubric:: 注意 :name: 注意 :class: title 把一个整数转换成\ ``bit(n)``\ 将拷贝整数的最右边的\ ``n``\ 位。 把一个整数转换成比整数本身长的位串,就会在最左边扩展符号。