本文介绍数据分析支持的数学函数的命令格式、参数说明及示例。您可根据实际需要选择合适的数学函数,进行数据计算、数据转换。
函数 | 功能 |
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>)
- 命令说明
计算x的y次方,即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。
- 返回DOUBLE类型时,返回的结果显示可能不符合预期,例如
- 示例
--返回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();