数学函数
本页是 SQL 数学标量函数参考,涵盖绝对值、三角函数、对数、取整、随机数等数值计算函数。
对超出定义域的输入,本页函数返回 NaN 或 -inf 而不报错:acos、asin 的参数超出 [-1, 1] 或 sqrt 传入负数时返回 NaN(如 acos(2) = NaN、sqrt(-1) = NaN);ln、log 传入 0 或负数时返回 -inf(如 ln(0) = -inf)。
| 函数 | 别名 | 说明 |
|---|---|---|
abs |
— | 返回数值的绝对值 |
acos |
— | 返回数值的反余弦 |
acosh |
— | 返回数值的反双曲余弦 |
asin |
— | 返回数值的反正弦 |
asinh |
— | 返回数值的反双曲正弦 |
atan |
— | 返回数值的反正切 |
atan2 |
— | 返回 expression_y / expression_x 的反正切 |
atanh |
— | 返回数值的反双曲正切 |
cbrt |
— | 返回数值的立方根 |
ceil |
— | 返回大于或等于给定数值的最近整数 |
cos |
— | 返回数值的余弦 |
cosh |
— | 返回数值的双曲余弦 |
cot |
— | 返回数值的余切 |
degrees |
— | 将弧度转换为角度 |
exp |
— | 返回数值以 e 为底的指数 |
factorial |
— | 返回数值的阶乘 |
floor |
— | 返回小于或等于给定数值的最近整数 |
gcd |
— | 返回两个数值的最大公约数 |
isnan |
— | 判断数值是否为 NaN |
iszero |
— | 判断数值是否为零 |
lcm |
— | 返回两个数值的最小公倍数 |
ln |
— | 返回数值的自然对数 |
log |
— | 返回数值以指定底数(默认 10)为底的对数 |
log10 |
— | 返回数值以 10 为底的对数 |
log2 |
— | 返回数值以 2 为底的对数 |
nanvl |
— | 第一个参数不是 NaN 时返回第一个参数,否则返回第二个参数 |
pi |
— | 返回 π 的近似值 |
power |
pow |
返回底数表达式的指数次幂 |
radians |
— | 将角度转换为弧度 |
random |
— | 返回 [0, 1) 区间内的随机浮点值 |
round |
— | 将数值四舍五入到最近的整数 |
signum |
— | 返回数值的符号 |
sin |
— | 返回数值的正弦 |
sinh |
— | 返回数值的双曲正弦 |
sqrt |
— | 返回数值的平方根 |
tan |
— | 返回数值的正切 |
tanh |
— | 返回数值的双曲正切 |
trunc |
— | 将数值截断为整数或指定小数位数 |
abs
返回数值的绝对值。
语法:abs(numeric_expression)
参数:
numeric_expression:要操作的数值表达式。可以是常量、列或函数,以及任意运算符组合。
示例:
1> SELECT abs(-17.5);
2+---------------------+
3| abs(Float64(-17.5)) |
4+---------------------+
5| 17.5 |
6+---------------------+
acos
返回数值的反余弦(逆余弦)。
语法:acos(numeric_expression)
参数:
numeric_expression:要操作的数值表达式。可以是常量、列或函数,以及任意运算符组合。
示例:
1> SELECT acos(0.5);
2+--------------------+
3| acos(Float64(0.5)) |
4+--------------------+
5| 1.0471975511965976 |
6+--------------------+
acosh
返回数值的反双曲余弦(逆双曲余弦)。
语法:acosh(numeric_expression)
参数:
numeric_expression:要操作的数值表达式。可以是常量、列或函数,以及任意运算符组合。
示例:
1> SELECT acosh(2);
2+--------------------+
3| acosh(Int64(2)) |
4+--------------------+
5| 1.3169578969248166 |
6+--------------------+
asin
返回数值的反正弦(逆正弦)。
语法:asin(numeric_expression)
参数:
numeric_expression:要操作的数值表达式。可以是常量、列或函数,以及任意运算符组合。
示例:
1> SELECT asin(0.5);
2+--------------------+
3| asin(Float64(0.5)) |
4+--------------------+
5| 0.5235987755982988 |
6+--------------------+
asinh
返回数值的反双曲正弦(逆双曲正弦)。
语法:asinh(numeric_expression)
参数:
numeric_expression:要操作的数值表达式。可以是常量、列或函数,以及任意运算符组合。
示例:
1> SELECT asinh(1);
2+-------------------+
3| asinh(Int64(1)) |
4+-------------------+
5| 0.881373587019543 |
6+-------------------+
atan
返回数值的反正切(逆正切)。
语法:atan(numeric_expression)
参数:
numeric_expression:要操作的数值表达式。可以是常量、列或函数,以及任意运算符组合。
示例:
1> SELECT atan(1);
2+--------------------+
3| atan(Int64(1)) |
4+--------------------+
5| 0.7853981633974483 |
6+--------------------+
atan2
返回 expression_y / expression_x 的反正切(逆正切)。
语法:atan2(expression_y, expression_x)
参数:
expression_y:要操作的第一个数值表达式。可以是常量、列或函数,以及任意算术运算符组合。expression_x:要操作的第二个数值表达式。可以是常量、列或函数,以及任意算术运算符组合。
示例:
1> SELECT atan2(2, 1);
2+--------------------------+
3| atan2(Int64(2),Int64(1)) |
4+--------------------------+
5| 1.1071488 |
6+--------------------------+
atanh
返回数值的反双曲正切(逆双曲正切)。
语法:atanh(numeric_expression)
参数:
numeric_expression:要操作的数值表达式。可以是常量、列或函数,以及任意运算符组合。
示例:
1> SELECT atanh(0.5);
2+---------------------+
3| atanh(Float64(0.5)) |
4+---------------------+
5| 0.5493061443340549 |
6+---------------------+
cbrt
返回数值的立方根。
语法:cbrt(numeric_expression)
参数:
numeric_expression:要操作的数值表达式。可以是常量、列或函数,以及任意运算符组合。
示例:
1> SELECT cbrt(27);
2+-----------------+
3| cbrt(Int64(27)) |
4+-----------------+
5| 3.0 |
6+-----------------+
ceil
返回大于或等于给定数值的最近整数。
语法:ceil(numeric_expression)
参数:
numeric_expression:要操作的数值表达式。可以是常量、列或函数,以及任意运算符组合。
示例:
1> SELECT ceil(4.2);
2+--------------------+
3| ceil(Float64(4.2)) |
4+--------------------+
5| 5.0 |
6+--------------------+
cos
返回数值的余弦。
语法:cos(numeric_expression)
参数:
numeric_expression:要操作的数值表达式。可以是常量、列或函数,以及任意运算符组合。
示例:
1> SELECT cos(0);
2+---------------+
3| cos(Int64(0)) |
4+---------------+
5| 1.0 |
6+---------------+
cosh
返回数值的双曲余弦。
语法:cosh(numeric_expression)
参数:
numeric_expression:要操作的数值表达式。可以是常量、列或函数,以及任意运算符组合。
示例:
1> SELECT cosh(1);
2+--------------------+
3| cosh(Int64(1)) |
4+--------------------+
5| 1.5430806348152437 |
6+--------------------+
cot
返回数值的余切。
语法:cot(numeric_expression)
参数:
numeric_expression:要操作的数值表达式。可以是常量、列或函数,以及任意运算符组合。
示例:
1> SELECT cot(1);
2+--------------------+
3| cot(Int64(1)) |
4+--------------------+
5| 0.6420926159343308 |
6+--------------------+
degrees
将弧度转换为角度。
语法:degrees(numeric_expression)
参数:
numeric_expression:要操作的数值表达式。可以是常量、列或函数,以及任意运算符组合。
示例:
1> SELECT degrees(pi());
2+---------------+
3| degrees(pi()) |
4+---------------+
5| 180.0 |
6+---------------+
exp
返回数值以 e 为底的指数。
语法:exp(numeric_expression)
参数:
numeric_expression:要操作的数值表达式。可以是常量、列或函数,以及任意运算符组合。
示例:
1> SELECT exp(1);
2+-------------------+
3| exp(Int64(1)) |
4+-------------------+
5| 2.718281828459045 |
6+-------------------+
factorial
阶乘。当值小于 2 时返回 1。
语法:factorial(numeric_expression)
参数:
numeric_expression:要操作的数值表达式。可以是常量、列或函数,以及任意运算符组合。
示例:
1> SELECT factorial(5);
2+---------------------+
3| factorial(Int64(5)) |
4+---------------------+
5| 120 |
6+---------------------+
floor
返回小于或等于给定数值的最近整数。
语法:floor(numeric_expression)
参数:
numeric_expression:要操作的数值表达式。可以是常量、列或函数,以及任意运算符组合。
示例:
1> SELECT floor(4.8);
2+---------------------+
3| floor(Float64(4.8)) |
4+---------------------+
5| 4.0 |
6+---------------------+
gcd
返回 expression_x 与 expression_y 的最大公约数。两个输入都为零时返回 0。
语法:gcd(expression_x, expression_y)
参数:
expression_x:要操作的第一个数值表达式。可以是常量、列或函数,以及任意运算符组合。expression_y:要操作的第二个数值表达式。可以是常量、列或函数,以及任意运算符组合。
示例:
1> SELECT gcd(24, 36);
2+--------------------------+
3| gcd(Int64(24),Int64(36)) |
4+--------------------------+
5| 12 |
6+--------------------------+
isnan
如果给定数值为 +NaN 或 -NaN 则返回 true,否则返回 false。
语法:isnan(numeric_expression)
参数:
numeric_expression:要操作的数值表达式。可以是常量、列或函数,以及任意运算符组合。
示例:
1> SELECT isnan('NaN'::double);
2+--------------------+
3| isnan(Utf8("NaN")) |
4+--------------------+
5| true |
6+--------------------+
iszero
如果给定数值为 +0.0 或 -0.0 则返回 true,否则返回 false。
语法:iszero(numeric_expression)
参数:
numeric_expression:要操作的数值表达式。可以是常量、列或函数,以及任意运算符组合。
示例:
1> SELECT iszero(0.0);
2+--------------------+
3| iszero(Float64(0)) |
4+--------------------+
5| true |
6+--------------------+
lcm
返回 expression_x 与 expression_y 的最小公倍数。任一输入为零时返回 0。
语法:lcm(expression_x, expression_y)
参数:
expression_x:要操作的第一个数值表达式。可以是常量、列或函数,以及任意运算符组合。expression_y:要操作的第二个数值表达式。可以是常量、列或函数,以及任意运算符组合。
示例:
1> SELECT lcm(4, 6);
2+------------------------+
3| lcm(Int64(4),Int64(6)) |
4+------------------------+
5| 12 |
6+------------------------+
ln
返回数值的自然对数。
语法:ln(numeric_expression)
参数:
numeric_expression:要操作的数值表达式。可以是常量、列或函数,以及任意运算符组合。
示例:
1> SELECT ln(10);
2+-------------------+
3| ln(Int64(10)) |
4+-------------------+
5| 2.302585092994046 |
6+-------------------+
log
返回数值以 base 为底的对数。可以指定底数;省略底数时,按以 10 为底计算。
语法:log(base, numeric_expression) 或 log(numeric_expression)
参数:
base:作为底数的数值表达式。可以是常量、列或函数,以及任意运算符组合。numeric_expression:要操作的数值表达式。可以是常量、列或函数,以及任意运算符组合。
示例:
1> SELECT log(2, 64);
2+-------------------------+
3| log(Int64(2),Int64(64)) |
4+-------------------------+
5| 6.0 |
6+-------------------------+
log10
返回数值以 10 为底的对数。
语法:log10(numeric_expression)
参数:
numeric_expression:要操作的数值表达式。可以是常量、列或函数,以及任意运算符组合。
示例:
1> SELECT log10(1000);
2+--------------------+
3| log10(Int64(1000)) |
4+--------------------+
5| 3.0 |
6+--------------------+
log2
返回数值以 2 为底的对数。
语法:log2(numeric_expression)
参数:
numeric_expression:要操作的数值表达式。可以是常量、列或函数,以及任意运算符组合。
示例:
1> SELECT log2(8);
2+----------------+
3| log2(Int64(8)) |
4+----------------+
5| 3.0 |
6+----------------+
nanvl
如果第一个参数不是 NaN,则返回第一个参数;否则返回第二个参数。
语法:nanvl(expression_x, expression_y)
参数:
expression_x:不为 NaN 时要返回的数值表达式。可以是常量、列或函数,以及任意算术运算符组合。expression_y:当第一个表达式为 NaN 时要返回的数值表达式。可以是常量、列或函数,以及任意算术运算符组合。
示例:
1> SELECT nanvl('NaN'::double, 0);
2+-----------------------------+
3| nanvl(Utf8("NaN"),Int64(0)) |
4+-----------------------------+
5| 0.0 |
6+-----------------------------+
pi
返回 π 的近似值。
语法:pi()
示例:
1> SELECT pi();
2+-------------------+
3| pi() |
4+-------------------+
5| 3.141592653589793 |
6+-------------------+
power
返回底数表达式的指数次幂。
语法:power(base, exponent)
参数:
base:作为底数的数值表达式。可以是常量、列或函数,以及任意运算符组合。exponent:作为指数的数值表达式。可以是常量、列或函数,以及任意运算符组合。
别名:pow
示例:
1> SELECT power(2, 10);
2+---------------------------+
3| power(Int64(2),Int64(10)) |
4+---------------------------+
5| 1024 |
6+---------------------------+
radians
将角度转换为弧度。
语法:radians(numeric_expression)
参数:
numeric_expression:要操作的数值表达式。可以是常量、列或函数,以及任意运算符组合。
示例:
1> SELECT radians(180);
2+---------------------+
3| radians(Int64(180)) |
4+---------------------+
5| 3.141592653589793 |
6+---------------------+
random
返回 [0, 1) 区间内的随机浮点值。每一行使用各自独立的随机种子。
语法:random()
示例:
1> SELECT random();
2+--------------------+
3| random() |
4+--------------------+
5| 0.7711045760885756 |
6+--------------------+
结果为 [0, 1) 区间随机数,每次执行不同。
round
将数值四舍五入到最近的整数。
语法:round(numeric_expression[, decimal_places])
参数:
numeric_expression:要操作的数值表达式。可以是常量、列或函数,以及任意运算符组合。decimal_places:可选。四舍五入保留的小数位数。默认为 0。
示例:
1> SELECT round(3.14159, 2);
2+----------------------------------+
3| round(Float64(3.14159),Int64(2)) |
4+----------------------------------+
5| 3.14 |
6+----------------------------------+
signum
返回数值的符号。负数返回 -1,零和正数返回 1。
语法:signum(numeric_expression)
参数:
numeric_expression:要操作的数值表达式。可以是常量、列或函数,以及任意运算符组合。
示例:
1> SELECT signum(-42);
2+--------------------+
3| signum(Int64(-42)) |
4+--------------------+
5| -1.0 |
6+--------------------+
sin
返回数值的正弦。
语法:sin(numeric_expression)
参数:
numeric_expression:要操作的数值表达式。可以是常量、列或函数,以及任意运算符组合。
示例:
1> SELECT sin(pi() / 2);
2+----------------------+
3| sin(pi() / Int64(2)) |
4+----------------------+
5| 1.0 |
6+----------------------+
sinh
返回数值的双曲正弦。
语法:sinh(numeric_expression)
参数:
numeric_expression:要操作的数值表达式。可以是常量、列或函数,以及任意运算符组合。
示例:
1> SELECT sinh(1);
2+--------------------+
3| sinh(Int64(1)) |
4+--------------------+
5| 1.1752011936438014 |
6+--------------------+
sqrt
返回数值的平方根。
语法:sqrt(numeric_expression)
参数:
numeric_expression:要操作的数值表达式。可以是常量、列或函数,以及任意运算符组合。
示例:
1> SELECT sqrt(16);
2+-----------------+
3| sqrt(Int64(16)) |
4+-----------------+
5| 4.0 |
6+-----------------+
tan
返回数值的正切。
语法:tan(numeric_expression)
参数:
numeric_expression:要操作的数值表达式。可以是常量、列或函数,以及任意运算符组合。
示例:
1> SELECT tan(0);
2+---------------+
3| tan(Int64(0)) |
4+---------------+
5| 0.0 |
6+---------------+
tanh
返回数值的双曲正切。
语法:tanh(numeric_expression)
参数:
numeric_expression:要操作的数值表达式。可以是常量、列或函数,以及任意运算符组合。
示例:
1> SELECT tanh(1);
2+--------------------+
3| tanh(Int64(1)) |
4+--------------------+
5| 0.7615941559557649 |
6+--------------------+
trunc
将数值截断为整数,或截断到指定的小数位数。
语法:trunc(numeric_expression[, decimal_places])
参数:
numeric_expression:要操作的数值表达式。可以是常量、列或函数,以及任意运算符组合。decimal_places:可选。要截断到的小数位数。默认为 0(截断为整数)。若decimal_places为正整数,截断小数点右侧的数字;若decimal_places为负整数,将小数点左侧的数字替换为0。
示例:
1> SELECT trunc(3.14159, 2);
2+----------------------------------+
3| trunc(Float64(3.14159),Int64(2)) |
4+----------------------------------+
5| 3.14 |
6+----------------------------------+
评价此篇文章
