数学函数

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

函数功能
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();