数字操作函数和操作符

相比于原始的openGauss,dolphin对于时间/日期函数的修改主要为:

  1. 新增DIV/MOD/XOR/^操作符。
  2. 新增truncate/rand/crc32/conv/float8_bool/oct/float4_bool函数。
  • DIV

    描述:除(取整)

    示例:

    openGauss=# SELECT 8 DIV 3 AS RESULT;
     result 
    --------
          2
    (1 row)
    
  • MOD

    描述:模(求余)

    示例:

    openGauss=# SELECT 4 MOD 3 AS RESULT;
     result 
    --------
          1
    (1 row)
    
  • XOR

    描述:二进制XOR

    示例:

    openGauss=# SELECT 4 XOR 3 AS RESULT;
     result 
    --------
          0
    (1 row)
    
  • truncate(v numeric, s int)

    描述:截断为s位小数。等价于trunc

    返回值类型:numeric

    示例:

    openGauss=# SELECT truncate(42.4382, 2);
     truncate
    ----------
        42.43
    (1 row)
    
  • rand()

    描述:0.0到1.0之间的随机数。等价于random

    返回值类型:double precision

    示例:

    openGauss=# SELECT rand();
           rand
    -------------------
     0.254671605769545
    (1 row)
    
  • crc32(string)

    描述:计算string的crc32数值

    返回值类型:int

    示例:

    openGauss=# SELECT crc32('abc');
       crc32
    -----------
     891568578
    (1 row)
    
  • conv(input in, current_base int, new_base int)

    描述:将数字或字符串从一个数字基本系统转换为另一个数字基本系统。in支持数字和字符串两种类型

    返回值类型:text

    示例:

    openGauss=# SELECT conv(20, 10, 2);
     conv
    -------
     10100
    (1 row)
    
    openGauss=# SELECT conv('8D', 16, 10);
     conv
    ------
     141
    (1 row)
    
  • ^

    描述:实现两个整数之间的按位异或。

    注意:

    • 异或操作符不支持非0/1的bool类型,也不支持raw类型。
    • 在dolphin插件中,^操作符不再支持对两个整数之间的幂运算。如需要使用两个整数之间的幂运算操作,可以使用power函数。

    返回值类型:INT

    示例:

    openGauss=# SELECT 1^1;
    ?column?
    ----------
           0
    (1 row)
    
    openGauss=# SELECT 2 ^ 3;
     ?column? 
    ----------
            1
    (1 row)
    
    openGauss=# SELECT power(2,3);
     power 
    -------
         8
    (1 row)
    

    描述:当set dolphin.b_compatibility_mode=0后,可以实现对float数据的幂运算。当set dolphin.b_compatibility_mode=1后,可以实现对float数据的按位异或,对float数据四舍五入后异或。

    返回值类型:DOUBLE

    示例:

    openGauss=# select 0.5678::float^1.1234::float;
     ?column? 
    ----------
            0
    (1 row)
    
  • float8_bool(float)

    描述:根据浮点数的取值返回布尔型(为零时返回false,否则返回true)。

    返回值类型:boolean

    示例:

    openGauss=# select float8_bool(0.1);
     float8_bool 
    -------------
     t
    (1 row)
    
    openGauss=# select float8_bool(0.0);
     float8_bool 
    -------------
     f
    (1 row)
    
  • oct(input N)

    描述:将数字或字符串从一个十进制数字转换为八进制数字。

    返回值类型:text

    示例:

    openGauss=# SELECT OCT(10);
     oct 
    -----
    12
    (1 row)
    
    openGauss=# SELECT OCT('10');
     oct 
    -----
    12
    (1 row)
    
  • float4_bool(float)

    描述:根据浮点数的取值返回布尔型(为零时返回false,否则返回true)。

    返回值类型:boolean

    示例:

    openGauss=# select float4_bool(0.1);
     float4_bool 
    -------------
     t
    (1 row)
    
    openGauss=# select float4_bool(0.0);
     float4_bool 
    -------------
     f
    (1 row)
    
意见反馈
编组 3备份
    openGauss 2024-03-28 00:50:31
    取消