本文介绍数据分析支持的数学函数的命令格式、参数说明及示例。您可根据实际需要选择合适的数学函数,进行数据计算、数据转换。

函数 功能
ABS 计算绝对值。
ASIN 计算反正弦值。
COS 计算余弦值。
COSH 计算双曲余弦值。
CEIL 计算向上取整值。
EXP 计算指数值。
FLOOR 计算向下取整值。
LOG 计算log对数值。
POW 计算幂值。
RAND 返回随机数。
ROUND 返回四舍五入到指定小数点位置的值。
SIN 计算正弦值。
SINH 计算双曲正弦值。
SQRT 计算平方根。
TAN 计算正切值。
TANH 计算双曲正切值。
TRUNC 返回截取到指定小数点位置的值。
HEX 返回整数或字符串的十六进制格式。
PI 返回π的值。
UNHEX 返回十六进制字符串所代表的字符串。

ABS

  • 命令格式
    double abs(double <number>)
    bigint abs(bigint <number>)
    decimal abs(decimal <number>)
  • 命令说明

    计算number的绝对值。

  • 参数说明
    number:必填。当number为DOUBLE、BIGINT或DECIMAL类型时会返回相应的类型。
    • 输入为BIGINT,则返回BIGINT类型。
    • 输入为DOUBLE,则返回DOUBLE类型。
    • 输入为DECIMAL,则返回DECIMAL类型。
    • 输入为STRING,则隐式转换为DOUBLE类型后参与运算。
    • 输入为NULL,则返回NULL。
    • 输入非以上5种类型,则返回报错。
    说明 当输入BIGINT类型的值超过BIGINT的最大表示范围时,会返回DOUBLE类型,但可能会损失精度。
  • 返回值说明

    返回值类型取决于输入参数的类型,包含DOUBLE、BIGINT或DECIMAL类型。

  • 示例
    --返回NULL。
        abs(null);
    
    --返回1。
        abs(-1);
    
    --返回1.2。
        abs(-1.2);
    
    --返回2.0。
        abs("-2");
    
    --返回1.2232083745629837E32。
        abs(122320837456298376592387456923748);

ASIN

  • 命令格式
    double asin(double <number>)
    decimal asin(decimal <number>)
  • 命令说明

    计算number的反正弦函数。

  • 参数说明

    number:必填。DOUBLE类型或DECIMAL类型,取值范围为[-1,1]。如果输入为STRING类型或BIGINT类型,会隐式转换为DOUBLE类型后参与运算。如果输入为其他数据类型则返回报错。

  • 返回值说明

    返回DOUBLE类型或DECIMAL类型,值域在-π/2~π/2之间。如果输入参数为NULL,则返回NULL。

  • 示例
    --返回1.5707963267948966。
        asin(1);
    --返回-1.5707963267948966。
        asin(-1);

CEIL

  • 命令格式
    bigint ceil(double <value>)
    bigint ceil(decimal <value>)
  • 命令说明

    向上取整,返回不小于输入值value的最小整数。

  • 参数说明

    value:必填。DOUBLE类型或DECIMAL类型。如果输入为STRING类型或BIGINT类型,会隐式转换为DOUBLE类型后参与运算。如果输入为其他类型则返回报错。

  • 返回值说明

    返回BIGINT类型。如果输入参数为NULL,则返回NULL。

  • 示例
    --返回2。
        ceil(1.1);
    --返回-1。
        ceil(-1.1);

COS

  • 命令格式
    double cos(double <number>)
    decimal cos(decimal <number>)
  • 命令说明

    计算number的余弦函数,输入为弧度值。

  • 参数说明

    number:必填。DOUBLE类型或DECIMAL类型。如果输入为STRING类型或BIGINT类型,会隐式转换为DOUBLE类型后参与运算。如果输入为其他类型则返回报错。

  • 返回值说明

    返回DOUBLE类型或DECIMAL类型。如果输入参数为NULL,则返回NULL。

  • 示例
    --返回2.6794896585028633e-8。
        cos(3.1415926/2);
    
    --返回-0.9999999999999986。
        cos(3.1415926);

COSH

  • 命令格式
    double cosh(double <number>)
    decimal cosh(decimal <number>)
  • 命令说明

    计算number的双曲余弦函数。

  • 参数说明

    number:必填。DOUBLE类型或DECIMAL类型。如果输入为STRING类型或BIGINT类型,会隐式转换为DOUBLE类型后参与运算。如果输入为其他类型则返回报错。

  • 返回值说明

    返回DOUBLE类型或DECIMAL类型。如果输入参数为NULL,则返回NULL。

  • 示例
    --返回2.5091784169949913。
        cosh(3.1415926/2);

EXP

  • 命令格式
    double exp(double <number>)
    decimal exp(decimal <number>)
  • 命令说明

    计算number的指数函数。

  • 参数说明

    number:必填。DOUBLE类型或DECIMAL类型。如果输入为STRING类型或BIGINT类型,会隐式转换为DOUBLE类型后参与运算。如果输入为其他类型则返回报错。

  • 返回值说明

    返回DOUBLE类型或DECIMAL类型。如果输入参数为NULL,则返回NULL。

  • 示例
    --返回4.810477252069109。
        exp(3.1415926/2);

FLOOR

  • 命令格式
    bigint floor(double <number>)
    bigint floor(decimal <number>)
  • 命令说明

    向下取整,返回不大于number的最大整数值。

  • 参数说明

    number:必填。DOUBLE类型或DECIMAL类型。如果输入为STRING类型或BIGINT类型,会隐式转换为DOUBLE类型后参与运算。如果输入为其他类型则返回报错。

  • 返回值说明

    返回BIGINT类型。如果输入参数为NULL,则返回NULL。

  • 示例
    --返回1。
        floor(1.2);
    
    --返回0。
        floor(0.1);
    
    --返回-2。
        floor(-1.2);
    
    --返回-1。
        floor(-0.1);
    
    --返回0。
        floor(0.0);
    
    --返回0。
        floor(-0.0);

LOG

  • 命令格式
    double log(double <base>, double <x>)
    decimal log(decimal <base>, decimal <x>)
  • 命令说明

    计算以base为底的x的对数。

  • 参数说明
    • base:必填。DOUBLE类型或DECIMAL类型。如果输入为STRING类型或BIGINT类型,会隐式转换为DOUBLE类型后参与运算。如果输入为其他类型则返回报错。
    • x:必填。DOUBLE类型或DECIMAL类型。如果输入为STRING类型或BIGINT类型,会隐式转换为DOUBLE类型后参与运算。如果输入为其他类型则返回报错。
  • 返回值说明
    返回DOUBLE类型或DECIMAL类型的对数值。
    • 如果任一输入参数为NULL,则返回NULL。
    • 如果任一输入参数为负数或0,则返回报错。
    • 如果base为1(会引发一个除零行为),也会返回报错。
  • 示例
    --返回4.0。
        log(2, 16);

POW

  • 命令格式
    double pow(double <x>, double <y>)
    decimal pow(decimal <x>, decimal <y>)
  • 命令说明

    计算xy次方,即xy

  • 参数说明
    • x:必填。DOUBLE类型或DECIMAL类型。如果输入为STRING类型或BIGINT类型,会隐式转换为DOUBLE类型后参与运算。如果输入为其他类型则返回报错。
    • y:必填。DOUBLE类型或DECIMAL类型。如果输入为STRING类型或BIGINT类型,会隐式转换为DOUBLE类型后参与运算。如果输入为其他类型则返回报错。
  • 返回值说明

    返回DOUBLE类型或DECIMAL类型。如果任一输入参数为NULL,则返回NULL。

  • 示例
    --返回65536.0。
        pow(2, 16);

RAND

  • 命令格式
    double rand(bigint <seed>)
  • 命令说明

    返回DOUBLE类型的随机数,返回值区间是0~1。

  • 参数说明

    seed:可选。BIGINT类型。随机数种子,决定随机数序列的起始值。

    说明 您可以通过seed确定随机数序列,seed确定后,即可固定该函数的返回结果。
  • 返回值说明

    返回DOUBLE类型。

  • 示例
    --返回4.7147460303803655E-4。
        rand();
    --返回0.7308781907032909。
        rand(1);

ROUND

  • 命令格式
    double round(double <number>[, bigint <decimal_places>])
    decimal round(decimal <number>[, bigint <decimal_places>])
  • 命令说明

    四舍五入到指定小数点位置。

  • 参数说明
    • number:必填。DOUBLE类型或DECIMAL类型。如果输入为STRING类型或BIGINT类型,会隐式转换为DOUBLE类型后参与运算。如果输入是其他类型则返回报错。
    • decimal_places:可选。BIGINT类型常量,四舍五入计算到小数点后的位置,其他类型参数会返回报错。如果省略表示四舍五入到个位数,默认值为0。
      说明 decimal_places可以是负数。负数会从小数点向左开始计数,并且不保留小数部分。如果decimal_places超过了整数部分长度,返回0。
  • 返回值说明

    返回DOUBLE类型或DECIMAL类型。如果任一输入参数为NULL,则返回NULL。

  • 示例
    --返回125.0。
        round(125.315);
    --返回125.3。
        round(125.315, 1);
    --返回125.32。
        round(125.315, 2);
    --返回125.315。
        round(125.315, 3);
    --返回-125.32。
        round(-125.315, 2);
    --返回100.0。
        round(123.345, -2);
    --返回NULL。
        round(null);
    --返回123.345。
        round(123.345, 4);
    --返回0.0。
        round(123.345, -4);

SIN

  • 命令格式
    double sin(double <number>)
    decimal sin(decimal <number>)
  • 命令说明

    计算number的正弦函数,输入为弧度值。

  • 参数说明

    number:必填。DOUBLE类型或DECIMAL类型。如果输入为STRING类型或BIGINT类型,会隐式转换为DOUBLE类型后参与运算。如果输入其他类型则返回报错。

  • 返回值说明

    返回DOUBLE类型或DECIMAL类型。如果输入参数为NULL,则返回NULL。

  • 示例
    --返回-0.3048106211022167。
        sin(60);

SINH

  • 命令格式
    double sinh(double <number>)
    decimal sinh(decimal <number>)
  • 命令说明

    计算number的双曲正弦函数。

  • 参数说明

    number:必填。DOUBLE类型或DECIMAL类型。如果输入为STRING类型或BIGINT类型,会隐式转换为DOUBLE类型后参与运算。如果输入其他类型则返回报错。

  • 返回值说明

    返回DOUBLE类型或DECIMAL类型。如果输入参数为NULL,则返回NULL。

  • 示例
    --返回5.343237290762231E12。
        sinh(30);

SQRT

  • 命令格式
    double sqrt(double <number>)
    decimal sqrt(decimal <number>)
  • 命令说明

    计算number的平方根。

  • 参数说明

    number:必填。DOUBLE类型或DECIMAL类型,必须大于0,否则,返回异常。如果输入为STRING类型或BIGINT类型,会隐式转换为DOUBLE类型后参与运算。如果输入其他类型则返回报错。

  • 返回值说明

    返回DOUBLE类型或DECIMAL类型。如果输入参数为NULL,则返回NULL。

  • 示例
    --返回2.0。
        sqrt(4);

TAN

  • 命令格式
    double tan(double <number>)
    decimal tan(decimal <number>)
  • 命令说明

    计算number的正切函数,输入为弧度值。

  • 参数说明

    number:必填。DOUBLE类型或DECIMAL类型。如果输入为STRING类型或BIGINT类型,会隐式转换为DOUBLE类型后参与运算。如果输入其他类型则返回报错。

  • 返回值说明

    返回DOUBLE类型或DECIMAL类型。如果输入参数为NULL,则返回NULL。

  • 示例
    --返回-6.405331196646276。
        tan(30);

TANH

  • 命令格式
    double tanh(double <number>)
    decimal tanh(decimal <number>)
  • 命令说明

    计算number的双曲正切函数。

  • 参数说明

    number:必填。DOUBLE类型或DECIMAL类型。如果输入为STRING类型或BIGINT类型,会隐式转换为DOUBLE类型后参与运算。如果输入其他类型则返回报错。

  • 返回值说明

    返回DOUBLE类型或DECIMAL类型。如果输入参数为NULL,则返回NULL。

  • 示例
    --返回1.0。
    tanh(30);

TRUNC

  • 命令格式
    double trunc(double <number>[, bigint <decimal_places>])
    decimal trunc(decimal <number>[, bigint <decimal_places>])
  • 命令说明

    将输入值number截取到指定小数点位置。

  • 参数说明
    • number:必填。DOUBLE类型或DECIMAL类型。如果输入为STRING类型或BIGINT类型,会隐式转换为DOUBLE类型后参与运算。如果输入其他类型则返回报错。
    • decimal_places:可选。BIGINT类型常量,要截取到的小数点位置。其他类型参数会隐式转为BIGINT,省略此参数时默认截取到个位数。
      说明 decimal_places可以是负数,负数会从小数点向左开始截取,并且不保留小数部分。如果decimal_places超过了整数部分长度,则返回0。
  • 返回值说明

    返回值类型为DOUBLE或DECIMAL类型。如果任一输入参数为NULL,则返回NULL。

    说明
    • 返回DOUBLE类型时,返回的结果显示可能不符合预期,例如trunc(125.815,1),这个DOUBLE类型显示问题任何系统都存在。
    • 截取掉的部分补0。
  • 示例
    --返回125.0。
        trunc(125.815,0);
    --返回125.80000000000001。
        trunc(125.815,1);
    --返回125.81。
        trunc(125.815,2);
    --返回125.815。
        trunc(125.815,3);
    --返回-125.81。
        trunc(-125.815,2);
    --返回120.0。
        trunc(125.815,-1);
    --返回100.0。
        trunc(125.815,-2);
    --返回0.0。
        trunc(125.815,-3);
    --返回123.345。
        trunc(123.345,4);
    --返回0.0。
        trunc(123.345,-4);

HEX

  • 命令格式
    string hex(bigint <number>) 
    string hex(string <number>)
    string hex(binary <number>)
  • 命令说明

    将整数或字符串转换为十六进制格式。

  • 参数说明

    number:必填。如果number是BIGINT类型,那么返回number的十六进制表示。如果number是STRING类型,则返回该字符串的十六进制表示。

  • 返回值说明
    • 如果输入非0或非NULL参数,则返回STRING类型。
    • 如果输入参数为0,则返回0。
    • 如果输入参数为NULL,则返回报错。
  • 示例
    --返回0。
        hex(0);
    --返回616263。
        hex('abc');
    --返回11。
        hex(17);
    --返回3137。
        hex('17');
    --返回报错。 
        hex(null);

UNHEX

  • 命令格式
    binary unhex(string <number>)
  • 命令说明

    返回十六进制字符串所代表的字符串。

  • 参数说明

    number:必填。为十六进制字符串。

  • 返回值说明

    返回BINARY类型。如果输入参数为0,则返回报错;如果输入参数为NULL,则返回NULL。

  • 示例
    --返回abc。
        unhex('616263');
    --返回abc。
        unhex(616263);

PI

  • 命令格式
    double pi()
  • 命令说明

    返回π的值。

  • 返回值说明

    返回DOUBLE类型。

  • 示例
    --返回3.141592653589793。
        pi();