更新时间:2022-07-04 GMT+08:00

数学函数

DLI所支持的数学函数如表1所示。

表1 数学函数

函数

返回值

描述

round(DOUBLE a)

DOUBLE

四舍五入。

round(DOUBLE a, INT d)

DOUBLE

小数部分d位之后数字四舍五入,例如round(21.263,2),返回21.26。

bround(DOUBLE a)

DOUBLE

HALF_EVEN模式四舍五入,与传统四舍五入方式的区别在于,对数字5进行操作时,由前一位数字来决定,前一位数字为奇数,增加一位,前一位数字为偶数,舍弃一位。例如:bround(7.5)=8.0,bround(6.5)=6.0

bround(DOUBLE a, INT d)

DOUBLE

保留小数点后d位,d位之后数字以HALF_EVEN模式四舍五入。与传统四舍五入方式的区别在于,对数字5进行操作时,由前一位数字来决定,前一位数字为奇数,增加一位,前一位数字为偶数,舍弃一位。例如:bround(8.25, 1) = 8.2, bround(8.35, 1) = 8.4。

floor(DOUBLE a)

BIGINT

对给定数据进行向下舍入最接近的整数。例如:floor(21.2),返回21。

ceil(DOUBLE a), ceiling(DOUBLE a)

BIGINT

将参数向上舍入为最接近的整数。例如:ceil(21.2),返回22。

rand(), rand(INT seed)

DOUBLE

返回大于或等于0且小于1的平均分布随机数。如果指定种子seed,则会得到一个稳定的随机数序列。

exp(DOUBLE a), exp(DECIMAL a)

DOUBLE

返回e的a次方。

ln(DOUBLE a), ln(DECIMAL a)

DOUBLE

返回给定数值的自然对数。

log10(DOUBLE a), log10(DECIMAL a)

DOUBLE

返回给定数值的以10为底自然对数。

log2(DOUBLE a), log2(DECIMAL a)

DOUBLE

返回给定数值的以2为底自然对数。

log(DOUBLE base, DOUBLE a)

log(DECIMAL base, DECIMAL a)

DOUBLE

返回给定底数及指数返回自然对数。

pow(DOUBLE a, DOUBLE p), power(DOUBLE a, DOUBLE p)

DOUBLE

返回a的p次幂。

sqrt(DOUBLE a), sqrt(DECIMAL a)

DOUBLE

返回数值的平方根。

bin(BIGINT a)

STRING

返回二进制格式。

hex(BIGINT a) hex(STRING a)

STRING

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

conv(BIGINT num, INT from_base, INT to_base), conv(STRING num, INT from_base, INT to_base)

STRING

进制转换,将from_base进制下的num转化为to_base进制下面的数。例如:将5从十进制转换为四进制,conv(5,10,4)=11。

abs(DOUBLE a)

DOUBLE

取绝对值。

pmod(INT a, INT b), pmod(DOUBLE a, DOUBLE b)

INT or DOUBLE

返回a除b的余数的绝对值。

sin(DOUBLE a), sin(DECIMAL a)

DOUBLE

返回给定角度a的正弦值。

asin(DOUBLE a), asin(DECIMAL a)

DOUBLE

返回给定角度a的反正弦值。

cos(DOUBLE a), cos(DECIMAL a)

DOUBLE

返回给定角度a的余弦值。

acos(DOUBLE a), acos(DECIMAL a)

DOUBLE

返回给定角度a的反余弦值。

tan(DOUBLE a), tan(DECIMAL a)

DOUBLE

返回给定角度a的正切值。

atan(DOUBLE a), atan(DECIMAL a)

DOUBLE

返回给定角度a的反正切值。

degrees(DOUBLE a), degrees(DECIMAL a)

DOUBLE

返回弧度所对应的角度。

radians(DOUBLE a), radians(DECIMAL a)

DOUBLE

返回角度所对应的弧度。

positive(INT a), positive(DOUBLE a)

INT or DOUBLE

返回a的值,例如positive(2),返回2。

negative(INT a), negative(DOUBLE a)

INT or DOUBLE

返回a的相反数,例如negative(2),返回-2。

sign(DOUBLE a), sign(DECIMAL a)

DOUBLE or INT

返回a所对应的正负号,a为正返回1.0,a为负,返回-1.0,否则则返回0.0。

e()

DOUBLE

返回e的值。

pi()

DOUBLE

返回pi的值。

factorial(INT a)

BIGINT

返回a的阶乘。

cbrt(DOUBLE a)

DOUBLE

返回a的立方根。

shiftleft(TINYINT|SMALLINT|INT a, INT b)

shiftleft(BIGINT a, INT b)

INT

BIGINT

有符号左边移,将a的二进制数按位左移b位。

shiftright(TINYINT|SMALLINT|INT a, INT b)

shiftright(BIGINT a, INT b)

INT

BIGINT

有符号右移,将a的二进制数按位右移b位。

shiftrightunsigned(TINYINT|SMALLINT|INT a, INT b),

shiftrightunsigned(BIGINT a, INT b)

INT

BIGINT

无符号右移,将a的二进制数按位右移b位。

greatest(T v1, T v2, ...)

T

返回列表中的最大值。

least(T v1, T v2, ...)

T

返回列表中的最小值。