位串操作函数和操作符

相比于原始的openGauss,dolphin对于位串函数的修改主要为:

  1. 新增bit_bool函数。
  2. 新增^操作符。
  3. 新增bit_count函数。
  4. 新增bit_xor函数。
  • bit_bool(bit)

    描述:根据位串中的数据返回布尔型(全部为零时返回false,否则返回true)。

    返回值类型:boolean

    示例:

    1. openGauss=# select bit_bool('11111');
    2. bit_bool
    3. ----------
    4. t
    5. (1 row)
    1. openGauss=# select bit_bool('00001');
    2. bit_bool
    3. ----------
    4. t
    5. (1 row)
    1. openGauss=# select bit_bool('00000');
    2. bit_bool
    3. ----------
    4. f
    5. (1 row)
  • ^

    描述:实现bit类型数据的按位异或。

    返回值类型:bit

    示例:

    1. openGauss=# select b'1001'^b'1100';
    2. ?column?
    3. ----------
    4. 0101
    5. (1 row)
  • bit_count(N)

    描述:返回输入数据转为无符号64位整数时二进制字符串中位为1的数目

    输入类型:numeric text bit

    返回值类型:text

    注意: 当输入的数字或字符串数值超过无符号64位整数范围,返回结果统一为64;当输入的bit超过64个1时,返回结果为1.

    示例:

    1. openGauss=# SELECT bit_count(29);
    2. bit_count
    3. ----------
    4. 4
    5. (1 row)
    1. openGauss=# SELECT bit_count(b'101010');
    2. bit_count
    3. ----------
    4. 3
    5. (1 row)
  • bit_xor(expr)

    描述:返回表中所有列的值异或为无符号64位整数时的结果

    输入类型:expr

    返回值类型:unsigned int

    注意: 当表中的值的数字或字符串数值为负数时,会自动转换成无符号的数字.

    示例:

    1. openGauss=# INSERT INTO bit_xor_int4(a) values(-1.11);
    2. INSERT 0 1
    3. openGauss=# SELECT BIT_XOR(a) from bit_xor_int4;
    4. bit_xor
    5. ---------
    6. 1
    7. (1 row)
    8. openGauss=# INSERT INTO bit_xor_int4(a) values(1.11);
    9. INSERT 0 1
    10. openGauss=# SELECT BIT_XOR(a) from bit_xor_int4;
    11. bit_xor
    12. ---------
    13. 0
    14. (1 row)