数学函数
DLI所支持的数学函数如表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 |
返回列表中的最小值。 |