SQL分析提供了常见的数学函数供您在开发过程中使用,您可以根据实际需要选择合适的数学函数,进行数据计算、数据转换相关操作。本文为您提供SQL分析支持的数学函数的命令格式、参数说明及示例,指导您使用数学函数完成开发。
SQL分析支持的数学函数如下。
函数 | 功能 |
计算绝对值。 | |
计算反余弦值。 | |
计算expr1/expr2的反正切值。 | |
计算反正弦值。 | |
计算反正切值。 | |
计算向上取整值。 | |
计算进制转换值。 | |
计算皮尔逊系数。 | |
计算余弦值。 | |
计算双曲余弦值。 | |
计算余切值。 | |
将弧度转换为角度。 | |
返回e的值。 | |
计算指数值。 | |
计算向下取整值。 | |
将数字转化为指定格式的字符串。 | |
计算自然对数。 | |
计算log对数值。 | |
计算以10为底的对数。 | |
计算以2为底的对数。 | |
返回表达式的负值。 | |
返回π的值。 | |
返回表达式的值。 | |
计算幂值。 | |
将角度转换为弧度。 | |
返回随机数。 | |
返回四舍五入到指定小数点位置的值。 | |
计算按位左移值。 | |
计算按位右移值。 | |
计算无符号按位右移值。 | |
返回输入参数的符号。 | |
计算正弦值。 | |
计算双曲正弦值。 | |
计算平方根。 | |
计算正切值。 | |
计算双曲正切值。 |
ABS
命令格式
bigint|double|decimal abs(<number>)
命令说明
计算number的绝对值。
参数说明
number:必填。DOUBLE、BIGINT或DECIMAL类型。输入为STRING时,会隐式转换为DOUBLE类型后参与运算。
说明当输入BIGINT类型的值超过BIGINT的最大表示范围时,会返回DOUBLE类型,但可能会损失精度。
返回值说明
返回值类型取决于输入参数的类型。返回规则如下:
number为DOUBLE、BIGINT或DECIMAL类型时会返回相应的类型。
number为STRING类型时,返回DOUBLE类型。
number为NULL,则返回NULL。
示例
--返回NULL。
select abs(null);
--返回1。
select abs(-1);
--返回1.2。
select abs(-1.2);
--返回2.0。
select abs("-2");
--返回1.2232083745629837E32。
select abs(122320837456298376592387456923748);
--取tbl1表内id字段的绝对值。下面是一个完整的ABS函数在SQL中使用的示例,其他内建函数(除窗口函数和聚合函数外)的使用方式与其类似。
select abs(id) from tbl1;
ACOS
命令格式
double|decimal acos(<number>)
命令说明
计算number的反余弦函数。
参数说明
number:必填。取值范围为[-1,1]。DOUBLE或DECIMAL类型。输入为STRING、BIGINT类型时,会隐式转换为DOUBLE类型后参与运算。
返回值说明
返回值类型取决于输入参数的类型。值域在0~π之间。返回规则如下:
number为DOUBLE、DECIMAL类型时会返回相应的类型。
number为STRING、BIGINT类型时,返回DOUBLE类型。
number值不在[-1,1]范围内时,返回NULL。
number值为NULL时,返回NULL。
示例
--返回0.5155940062460905。
select acos("0.87");
--返回1.5707963267948966。
select acos(0);
--返回NULL。
select acos(null);
ATAN2
命令格式
double atan2(<expr1>, <expr2>)
命令说明
计算expr1/expr2的反正切函数。
参数说明
expr1:必填。DOUBLE类型。输入为STRING、BIGINT、DECIMAL类型时,会隐式转换为DOUBLE类型后参与运算。
expr2:必填。DOUBLE类型。输入为STRING、BIGINT、DECIMAL类型时,会隐式转换为DOUBLE类型后参与运算。
返回值说明
返回DOUBLE类型。值域在
-π/2~π/2
之间。expr1或expr2值为NULL时,返回NULL。示例
--返回0.0。 select atan2(0, 0);
ASIN
命令格式
double|decimal asin(<number>)
命令说明
计算number的反正弦函数。
参数说明
number:必填。取值范围为[-1,1]。DOUBLE或DECIMAL类型。输入为STRING、BIGINT类型时,会隐式转换为DOUBLE类型后参与运算。
返回值说明
返回值类型取决于输入参数的类型。值域在
-π/2~π/2
之间。返回规则如下:number为DOUBLE、DECIMAL类型时会返回相应的类型。
number为STRING、BIGINT类型时,返回DOUBLE类型。
number值不在[-1,1]范围内时,返回NULL。
number值为NULL时,返回NULL。
示例
--返回1.5707963267948966。
select asin(1);
--返回-1.5707963267948966。
select asin(-1);
--返回NULL。
select asin(null);
ATAN
命令格式
double atan(<number>)
命令说明
计算number的反正切函数。
参数说明
number:必填。DOUBLE类型。输入为STRING、BIGINT、DECIMAL类型时,会隐式转换为DOUBLE类型后参与运算。
返回值说明
返回DOUBLE类型。值域在
-π/2~π/2
之间。number值为NULL时,返回NULL。示例
--返回0.7853981633974483。
select atan(1);
--返回-0.7853981633974483。
select atan(-1);
--返回NULL。
select atan(null);
CEIL
命令格式
bigint ceil(<value>)
命令说明
向上取整,返回不小于输入值value的最小整数。
参数说明
value:必填。DOUBLE或DECIMAL类型。输入为STRING、BIGINT类型时,会隐式转换为DOUBLE类型后参与运算。
返回值说明
返回BIGINT类型。number值为NULL时,返回NULL。
示例
--返回2。
select ceil(1.1);
--返回-1。
select ceil(-1.1);
--返回NULL。
select ceil(null);
CONV
命令格式
string conv(<input>, bigint <from_base>, bigint <to_base>)
命令说明
该函数为进制转换函数。
参数说明
input:必填。以STRING表示的要转换的整数值,支持BIGINT和DOUBLE的隐式转换。
from_base、to_base:必填。以十进制表示的进制值,支持的值为2、8、10和16。支持STRING及DOUBLE类型的隐式转换。
返回值说明
返回STRING类型。返回规则如下:
input、from_base或to_base值为NULL时,返回NULL。
转换过程以64位精度工作,溢出时返回NULL。
input如果是负值,即以短划线(-)开头,返回NULL。如果输入的是小数,会转为整数值后进行进制转换,小数部分会被舍弃。
示例
--返回12。
select conv('1100', 2, 10);
--返回C。
select conv('1100', 2, 16);
--返回171。
select conv('ab', 16, 10);
--返回AB。
select conv('ab', 16, 16);
--返回NULL。
select conv('1100', null, 10);
CORR
命令格式
double corr(<col1>, <col2>)
命令说明
计算两列数据的皮尔逊系数(Pearson Correlation Coefficien)。
参数说明
col1、col2:必填。待计算皮尔逊系数的表的两个列名称。DOUBLE、BIGINT、INT、SMALLINT、TINYINT、FLOAT、DECIMAL类型。col1和col2的数据类型可以不相同。
返回值说明
返回DOUBLE类型。如果某一输入列的某一行存在NULL值,该行不参与计算。
COS
命令格式
double|decimal cos(<number>)
命令说明
计算number的余弦函数,输入为弧度值。
参数说明
number:必填。DOUBLE或DECIMAL类型。输入为STRING、BIGINT类型时,会隐式转换为DOUBLE类型后参与运算。
返回值说明
返回DOUBLE或DECIMAL类型。返回规则如下:
number为DOUBLE、DECIMAL类型时会返回相应的类型。
number为STRING、BIGINT类型时,返回DOUBLE类型。
number值为NULL时,返回NULL。
示例
--返回2.6794896585028633e-8。
select cos(3.1415926/2);
--返回-0.9999999999999986。
select cos(3.1415926);
--返回NULL。
select cos(null);
COSH
命令格式
double|decimal cosh(<number>)
命令说明
计算number的双曲余弦函数。
参数说明
number:必填。DOUBLE或DECIMAL类型。输入为STRING、BIGINT类型时,会隐式转换为DOUBLE类型后参与运算。
返回值说明
返回DOUBLE或DECIMAL类型。返回规则如下:
number为DOUBLE、DECIMAL类型时会返回相应的类型。
number为STRING、BIGINT类型时,返回DOUBLE类型。
number值为NULL时,返回NULL。
示例
--返回2.5091784169949913。
select cosh(3.1415926/2);
--返回NULL。
select cosh(null);
COT
命令格式
double|decimal cot(<number>)
命令说明
计算number的余切函数,输入为弧度值。
参数说明
number:必填。DOUBLE或DECIMAL类型。输入为STRING、BIGINT类型时,会隐式转换为DOUBLE类型后参与运算。
返回值说明
返回DOUBLE或DECIMAL类型。返回规则如下:
number为DOUBLE、DECIMAL类型时会返回相应的类型。
number为STRING、BIGINT类型时,返回DOUBLE类型。
number值为NULL时,返回NULL。
示例
--返回2.6794896585028643E-8。
select cot(3.1415926/2);
--返回NULL。
select cot(null);
DEGREES
命令格式
double degrees(<number>)
命令说明
将弧度转换为角度。
参数说明
number:必填。DOUBLE、BIGINT、INT、SMALLINT、TINYINT、FLOAT、DECIMAL、STRING类型。
返回值说明
返回DOUBLE类型。number值为NULL时,返回NULL。
示例
--返回90.0。
select degrees(1.5707963267948966);
--返回0.0。
select degrees(0);
--返回NULL。
select degrees(null);
E
命令格式
double e()
命令说明
返回
e
的值。返回值说明
返回DOUBLE类型。
示例
--返回2.718281828459045。 select e();
EXP
命令格式
double|decimal exp(<number>)
命令说明
计算number的指数函数。
参数说明
number:必填。DOUBLE或DECIMAL类型。输入为STRING、BIGINT类型时,会隐式转换为DOUBLE类型后参与运算。
返回值说明
返回DOUBLE或DECIMAL类型。返回规则如下:
number为DOUBLE、DECIMAL类型时会返回相应的类型。
number为STRING、BIGINT类型时,返回DOUBLE类型。
number值为NULL时,返回NULL。
示例
--返回4.810477252069109。
select exp(3.1415926/2);
--返回NULL。
select exp(null);
FLOOR
命令格式
bigint floor(<number>)
命令说明
向下取整,返回不大于number的最大整数值。
参数说明
number:必填。DOUBLE或DECIMAL类型。输入为STRING、BIGINT类型时,会隐式转换为DOUBLE类型后参与运算。
返回值说明
返回BIGINT类型。number值为NULL时,返回NULL。
示例
--返回1。
select floor(1.2);
--返回0。
select floor(0.1);
--返回-2。
select floor(-1.2);
--返回-1。
select floor(-0.1);
--返回0。
select floor(0.0);
--返回0。
select floor(-0.0);
--返回NULL。
select floor(null);
FORMAT_NUMBER
命令格式
string format_number(float|double|decimal <expr1>, <expr2>)
命令说明
将数字转化为指定格式的字符串。
参数说明
expr1:必填。需要格式化的数据。DOUBLE、BIGINT、INT、SMALLINT、TINYINT、FLOAT、DECIMAL、STRING类型。
expr2:必填。需要转化的目标格式。指定需要保留小数位数。也可以为类似
#,###,###.##
格式描述。
返回值说明
返回STRING类型数据。返回规则如下:
如果expr2>0,则四舍五入到小数点后指定位数。
如果expr2=0,则没有小数点或小数部分。
如果expr2<0,或者expr2>340,则返回报错。
expr1或expr2值为NULL时,返回NULL。
示例
--返回5.230。
select format_number(5.230134523424545456,3);
--返回12,332.123。
select format_number(12332.123456, '#,###,###,###.###');
--返回NULL。
select format_number(null,3);
ISNAN
命令格式
boolean isnan(<expr>)
命令说明
判断expr的值是否为NaN。
参数说明
expr:必填。DOUBLE类型。输入为STRING、BIGINT、DECIMAL类型时,会隐式转换为DOUBLE类型后参与运算。
返回值说明
如果expr的值为NaN,返回True,否则返回False。
expr的值为NULL时,返回False。
示例
--返回False。 SELECT isnan(100.1);
LN
命令格式
double|decimal ln(<number>)
命令说明
计算number的自然对数。
参数说明
number:必填。DOUBLE或DECIMAL类型。输入为STRING、BIGINT类型时,会隐式转换为DOUBLE类型后参与运算。
返回值说明
返回DOUBLE或DECIMAL类型。返回规则如下:
number为DOUBLE、DECIMAL类型时会返回相应的类型。
number为STRING、BIGINT类型时,返回DOUBLE类型。
number值为负数或0时,返回NULL。
number值为NULL时,返回NULL。
示例
--返回1.144729868791239。
select ln(3.1415926);
--返回NULL。
select ln(null);
LOG
命令格式
double log(<base>, <x>)
命令说明
计算以base为底的x的对数。
参数说明
base:必填。底数。DOUBLE或DECIMAL类型。输入为STRING、BIGINT类型时,会隐式转换为DOUBLE类型后参与运算。
x:必填。待计算对数的值。DOUBLE或DECIMAL类型。输入为STRING、BIGINT类型时,会隐式转换为DOUBLE类型后参与运算。
返回值说明
返回DOUBLE类型。 返回规则如下:
base或x为NULL时,返回NULL。
base或x为负数或0时,返回NULL。
如果base为1(会引发一个除零行为),会返回NULL。
示例
--返回4.0。
select log(2, 16);
--返回NULL。
select log(2, null);
LOG10
命令格式
double log10(<number>)
命令说明
返回以10为底,number的对数。
参数说明
number:必填。DOUBLE、BIGINT、INT、SMALLINT、TINYINT、FLOAT、DECIMAL、STRING类型。
返回值说明
返回DOUBLE类型。number值为0、负数或NULL时,返回NULL。
示例
--返回NULL。
select log10(null);
--返回NULL。
select log10(0);
--返回0.9030899869919435。
select log10(8);
LOG2
命令格式
double log2(<number>)
命令说明
返回以2为底,number的对数。
参数说明
number:必填。DOUBLE、BIGINT、INT、SMALLINT、TINYINT、FLOAT、DECIMAL、STRING类型。
返回值说明
返回DOUBLE类型。number值为0、负数或NULL时,返回NULL。
示例
--返回NULL。
select log2(null);
--返回NULL。
select log2(0);
--返回3.0。
select log2(8);
NEGATIVE
命令格式
TINYINT|SMALLINT|INT|BIGINT|DOUBLE|DECIMAL negative(TINYINT|SMALLINT|INT|BIGINT|DOUBLE|DECIMAL <expr>)
命令说明
返回expr的负值。
参数说明
expr:必填。输入表达式,支持TINYINT、SMALLINT、INT、BIGINT、DOUBLE、DECIMAL类型。
返回值说明
返回expr表达式的负值。
示例
--返回-1。 SELECT negative(1);
PI
命令格式
double pi()
命令说明
返回π的值。
返回值说明
返回DOUBLE类型。
示例
--返回3.141592653589793。 select pi();
POSITIVE
命令格式
TINYINT|SMALLINT|INT|BIGINT|DOUBLE|DECIMAL positive(TINYINT|SMALLINT|INT|BIGINT|DOUBLE|DECIMAL <expr>)
命令说明
返回expr的值。
参数说明
expr:必填。输入表达式,支持TINYINT、SMALLINT、INT、BIGINT、DOUBLE、DECIMAL类型。
返回值说明
返回expr表达式的值。
示例
--返回1。 SELECT positive(1);
POW
命令格式
double|decimal pow(<x>, <y>)
命令说明
计算x的y次方,即
x^y
。参数说明
x:必填。DOUBLE或DECIMAL类型。输入为STRING、BIGINT类型时,会隐式转换为DOUBLE类型后参与运算。
y:必填。DOUBLE或DECIMAL类型。输入为STRING、BIGINT类型时,会隐式转换为DOUBLE类型后参与运算。
返回值说明
返回DOUBLE或DECIMAL类型。返回规则如下:
x或y为DOUBLE、DECIMAL类型时会返回相应的类型。
x或y为STRING、BIGINT类型时,返回DOUBLE类型。
x或y值为NULL时,返回NULL。
示例
--返回65536.0。
select pow(2, 16);
--返回NULL。
select pow(2, null);
RADIANS
命令格式
double radians(<number>)
命令说明
将角度转换为弧度。
参数说明
number:必填。DOUBLE、BIGINT、INT、SMALLINT、TINYINT、FLOAT、DECIMAL、STRING类型。
返回值说明
返回DOUBLE类型。number值为NULL时,返回NULL。
示例
--返回1.5707963267948966。
select radians(90);
--返回0.0。
select radians(0);
--返回NULL。
select radians(null);
RAND
命令格式
double rand(bigint <seed>)
命令说明
返回DOUBLE类型的随机数,返回值区间是0~1。
参数说明
seed:可选。BIGINT类型。随机数种子,决定随机数序列的起始值。
说明您可以通过seed确定随机数序列,seed确定后,即可固定该函数的返回结果。执行环境是一样的情况下,seed取值不变的话,返回值是一样的,如果需要返回不一样的结果,需要修改seed取值。
返回值说明
返回DOUBLE类型。
示例
--返回4.7147460303803655E-4。 select rand(); --返回0.7308781907032909。 select rand(1);
ROUND
命令格式
double|decimal round(<number>[, bigint <decimal_places>])
命令说明
四舍五入到指定小数点位置。
参数说明
number:必填。DOUBLE类型或DECIMAL类型。输入为STRING、BIGINT类型时,会隐式转换为DOUBLE类型后参与运算。
decimal_places:可选。BIGINT类型常量,四舍五入计算到小数点后的位置。如果省略表示四舍五入到个位数,默认值为0。
说明decimal_places可以是负数。负数会从小数点向左开始计数,并且不保留小数部分。如果decimal_places超过了整数部分长度,返回0。
返回值说明
返回DOUBLE类型或DECIMAL类型。返回规则如下:
number为DOUBLE、DECIMAL类型时会返回相应的类型。
number为STRING、BIGINT类型时,返回DOUBLE类型。
decimal_places非BIGINT类型时,返回报错。
number或decimal_places值为NULL时,返回NULL。
示例
--返回125.0。
select round(125.315);
--返回125.3。
select round(125.315, 1);
--返回125.32。
select round(125.315, 2);
--返回125.315。
select round(125.315, 3);
--返回-125.32。
select round(-125.315, 2);
--返回100.0。
select round(123.345, -2);
--返回NULL。
select round(null);
--返回123.345。
select round(123.345, 4);
--返回0.0。
select round(123.345, -4);
SHIFTLEFT
命令格式
int shiftleft(tinyint|smallint|int <number1>, int <number2>) bigint shiftleft(bigint <number1>, int <number2>)
命令说明
按位左移(<<)。
参数说明
number1:必填。TINYINT、SMALLINT、INT或BIGINT类型。
number2:必填。INT类型。
返回值说明
返回INT或BIGINT类型。返回规则如下
number1非TINYINT、SMALLINT、INT或BIGINT类型时,返回报错。
number2非INT类型时,返回报错。
number1或number2值为NULL时,返回NULL。
示例
--返回4。1的二进制左移2位(1<<2,0001左移两位是0100)。
select shiftleft(1,2);
--返回32。4的二进制左移3位(4<<3,0100左移3位是100000)。
select shiftleft(4,3);
--返回NULL。
select shiftleft(null,2);
SHIFTRIGHT
命令格式
int shiftright(tinyint|smallint|int <number1>, int <number2>) bigint shiftright(bigint <number1>, int <number2>)
命令说明
按位右移(>>)。
参数说明
number1:必填。TINYINT、SMALLINT、INT或BIGINT类型。
number2:必填。INT类型。
返回值说明
返回INT或BIGINT类型。返回规则如下:
number1非TINYINT、SMALLINT、INT或BIGINT类型时,返回报错。
number2非INT类型时,返回报错。
number1或number2值为NULL时,返回NULL。
示例
--返回1。4的二进制右移2位(4>>2,1000右移两位是0001)。
select shiftright(4,2);
--返回4。32的二进制右移3位(32>>3,100000右移3位是0100)。
select shiftright(32,3);
--返回NULL。
select shiftright(null,3);
SHIFTRIGHTUNSIGNED
命令格式
int shiftrightunsigned(tinyint|smallint|int <number1>, int <number2>) bigint shiftrightunsigned(bigint <number1>, int <number2>)
命令说明
无符号按位右移(>>>)。
参数说明
number1:必填。TINYINT、SMALLINT、INT或BIGINT整型数据。
number2:必填。INT整型数据。
返回值说明
返回INT或BIGINT类型。返回规则如下:
number1非TINYINT、SMALLINT、INT或BIGINT类型时,返回报错。
number2非INT类型时,返回报错。
number1或number2值为NULL时,返回NULL。
示例
--返回2。8的二进制无符号右移2位(8>>>2,1000右移两位是0010)。
select shiftrightunsigned(8,2);
--返回1073741820。-14的二进制右移2位(-14>>>2, 11111111 11111111 11111111 11110010右移2位是00111111 11111111 11111111 11111100)。
select shiftrightunsigned(-14,2);
--返回NULL。
select shiftrightunsigned(-14,null);
SIGN
命令格式
double sign(<number>)
命令说明
获取输入参数的符号。
参数说明
number:必填。DOUBLE、BIGINT、INT、SMALLINT、TINYINT、FLOAT、DECIMAL、STRING类型。
返回值说明
返回DOUBLE类型。返回规则如下:
number值为正数时,返回1.0。
number值为负数时,返回-1.0。
number值为0时,返回0.0。
number值为NULL时,返回NULL。
示例
--返回-1.0。
select sign(-2.5);
--返回1.0。
select sign(2.5);
--返回0.0。
select sign(0);
--返回NULL。
select sign(null);
SIN
命令格式
double|decimal sin(<number>)
命令说明
计算number的正弦函数,输入为弧度值。
参数说明
number:必填。DOUBLE或DECIMAL类型。输入为STRING、BIGINT类型时,会隐式转换为DOUBLE类型后参与运算。
返回值说明
返回DOUBLE或DECIMAL类型。返回规则如下:
number为DOUBLE、DECIMAL类型时会返回相应的类型。
number为STRING、BIGINT类型时,返回DOUBLE类型。
number值为NULL时,返回NULL。
示例
--返回-0.3048106211022167。
select sin(60);
--返回NULL。
select sin(null);
SINH
命令格式
double|decimal sinh(<number>)
命令说明
计算number的双曲正弦函数。
参数说明
number:必填。DOUBLE或DECIMAL类型。输入为STRING、BIGINT类型时,会隐式转换为DOUBLE类型后参与运算。
返回值说明
返回DOUBLE或DECIMAL类型。返回规则如下:
number为DOUBLE、DECIMAL类型时会返回相应的类型。
number为STRING、BIGINT类型时,返回DOUBLE类型。
number值为NULL时,返回NULL。
示例
--返回5.343237290762231E12。
select sinh(30);
--返回NULL。
select sinh(null);
SQRT
命令格式
double|decimal sqrt(<number>)
命令说明
计算number的平方根。
参数说明
number:必填。DOUBLE或DECIMAL类型,必须大于0,小于0时返回NULL。输入为STRING、BIGINT类型时,会隐式转换为DOUBLE类型后参与运算。
返回值说明
返回DOUBLE或DECIMAL类型。返回规则如下:
number为DOUBLE、DECIMAL类型时会返回相应的类型。
number为STRING、BIGINT类型时,返回DOUBLE类型。
number值为NULL时,返回NULL。
示例
--返回2.0。
select sqrt(4);
--返回NULL。
select sqrt(null);
TAN
命令格式
double|decimal tan(<number>)
命令说明
计算number的正切函数,输入为弧度值。
参数说明
number:必填。DOUBLE或DECIMAL类型。输入为STRING、BIGINT类型时,会隐式转换为DOUBLE类型后参与运算。
返回值说明
返回DOUBLE或DECIMAL类型。返回规则如下:
number为DOUBLE、DECIMAL类型时会返回相应的类型。
number为STRING、BIGINT类型时,返回DOUBLE类型。
number值为NULL时,返回NULL。
示例
--返回-6.405331196646276。
select tan(30);
--返回NULL。
select tan(null);
TANH
命令格式
double|decimal tanh(<number>)
命令说明
计算number的双曲正切函数。
参数说明
number:必填。DOUBLE或DECIMAL类型。输入为STRING、BIGINT类型时,会隐式转换为DOUBLE类型后参与运算。
返回值说明
返回DOUBLE或DECIMAL类型。返回规则如下:
number为DOUBLE、DECIMAL类型时会返回相应的类型。
number为STRING、BIGINT类型时,返回DOUBLE类型。
number值为NULL时,返回NULL。
示例
--返回1.0。
select tanh(30);
--返回NULL。
select tanh(null);