跳到主要内容
版本:3.12.0

内置数学函数

本文介绍 悦数图数据库 支持的数学函数。

abs()​

abs() 返回指定数字的绝对值。

语法:abs(<expression>)

  • expression:结果的数据类型为 double 的表达式。

  • 返回类型:double。

示例:

nebula> RETURN abs(-10);
+------------+
| abs(-(10)) |
+------------+
| 10 |
+------------+

nebula> RETURN abs(5-6);
+------------+
| abs((5-6)) |
+------------+
| 1 |
+------------+

floor()​

floor() 返回小于或等于指定数字的最大整数。

语法:floor(<expression>)

  • expression:结果的数据类型为 double 的表达式。

  • 返回类型:double。

示例:

nebula> RETURN floor(9.9);
+------------+
| floor(9.9) |
+------------+
| 9.0 |
+------------+

ceil()​

ceil() 返回大于或等于指定数字的最小整数。

语法:ceil(<expression>)

  • expression:结果的数据类型为 double 的表达式。

  • 返回类型:double。

示例:

nebula> RETURN ceil(9.1);
+-----------+
| ceil(9.1) |
+-----------+
| 10.0 |
+-----------+

round()​

round() 返回指定数字四舍五入后的值。极端情况下请注意浮点数的精度问题。

语法:round(<expression>, <precision>, <mode>)

  • expression:结果的数据类型为 double 的表达式。

  • precision:代表精度的整数。小于 0 时 ,在小数点左侧做四舍五入。

  • mode:代表舍入模式的字符串。可选参数。可选值如下:

    • DOWN:向零舍入。
    • CEILING:向正无穷舍入。
    • FLOOR:向负无穷舍入。
    • HALF_UP:基于精度向最接近的值舍入,如果最接近的值有两个,则取远离零的值。
    • HALF_DOWN:基于精度向最接近的值舍入,如果最接近的值有两个,则取靠近零的值。
    • HALF_EVEN:基于精度向最接近的值舍入,如果最接近的值有两个,则取最接近的偶数值。
  • 返回类型:double。

示例:

nebula> RETURN round(314.15926, 2);
+--------------------+
| round(314.15926,2) |
+--------------------+
| 314.16 |
+--------------------+

nebula> RETURN round(314.15926, -1);
+-----------------------+
| round(314.15926,-(1)) |
+-----------------------+
| 310.0 |
+-----------------------+

nebula> RETURN round(314.15926, 2, "DOWN");
+---------------------------+
| round(314.15926,2,"DOWN") |
+---------------------------+
| 314.15 |
+---------------------------+

nebula> RETURN round(314.15926, 2, "CEILING");
+------------------------------+
| round(314.15926,2,"CEILING") |
+------------------------------+
| 314.16 |
+------------------------------+

nebula> RETURN round(314.15926, 2, "FLOOR");
+----------------------------+
| round(314.15926,2,"FLOOR") |
+----------------------------+
| 314.15 |
+----------------------------+

nebula> RETURN round(314.15, 1, "HALF_UP");
+---------------------------+
| round(314.15,1,"HALF_UP") |
+---------------------------+
| 314.2 |
+---------------------------+

nebula> RETURN round(314.15, 1, "HALF_DOWN");
+-----------------------------+
| round(314.15,1,"HALF_DOWN") |
+-----------------------------+
| 314.1 |
+-----------------------------+

nebula> RETURN round(314.15, 1, "HALF_EVEN");
+-----------------------------+
| round(314.15,1,"HALF_EVEN") |
+-----------------------------+
| 314.2 |
+-----------------------------+

sqrt()​

sqrt() 返回指定数字的平方根。

语法:sqrt(<expression>)

  • expression:结果的数据类型为 double 的表达式。

  • 返回类型:double。

示例:

nebula> RETURN sqrt(9);
+---------+
| sqrt(9) |
+---------+
| 3.0 |
+---------+

cbrt()​

cbrt() 返回指定数字的立方根。

语法:cbrt(<expression>)

  • expression:结果的数据类型为 double 的表达式。

  • 返回类型:double。

示例:

nebula> RETURN cbrt(8);
+---------+
| cbrt(8) |
+---------+
| 2.0 |
+---------+

hypot()​

hypot() 返回直角三角形的斜边长。

语法:hypot(<expression_x>,<expression_y>)

  • expression_x、expression_y:结果的数据类型为 double 的表达式。表示直角三角形的边长x和y。

  • 返回类型:double。

示例:

nebula> RETURN hypot(3,2*2);
+----------------+
| hypot(3,(2*2)) |
+----------------+
| 5.0 |
+----------------+

pow()​

pow() 返回指定数字的幂(x^y^)。

语法:pow(<expression_x>,<expression_y>,)

  • expression_x:结果的数据类型为 double 的表达式。表示底数x。

  • expression_y:结果的数据类型为 double 的表达式。表示指数y。

  • 返回类型:double。

示例:

nebula> RETURN pow(3,3);
+----------+
| pow(3,3) |
+----------+
| 27 |
+----------+

exp()​

exp() 返回自然常数 e 的幂(e^x^)。

语法:exp(<expression>)

  • expression:结果的数据类型为 double 的表达式。表示指数x。

  • 返回类型:double。

示例:

nebula> RETURN exp(2);
+------------------+
| exp(2) |
+------------------+
| 7.38905609893065 |
+------------------+

exp2()​

exp2() 返回2的幂(2^x^ )。

语法:exp2(<expression>)

  • expression:结果的数据类型为 double 的表达式。表示指数x。

  • 返回类型:double。

示例:

nebula> RETURN exp2(3);
+---------+
| exp2(3) |
+---------+
| 8.0 |
+---------+

log()​

log() 返回以自然数 e 为底的对数(logeNlog_{e}{N})。

语法:log(<expression>)

  • expression:结果的数据类型为 double 的表达式。表示真数N。

  • 返回类型:double。

示例:

nebula> RETURN log(8);
+--------------------+
| log(8) |
+--------------------+
| 2.0794415416798357 |
+--------------------+

log2()​

log2() 返回以 2 为底的对数(log2Nlog_{2}{N})。

语法:log2(<expression>)

  • expression:结果的数据类型为 double 的表达式。表示真数N。

  • 返回类型:double。

示例:

nebula> RETURN log2(8);
+---------+
| log2(8) |
+---------+
| 3.0 |
+---------+

log10()​

log10() 返回以 10 为底的对数(log10Nlog_{10}{N})。

语法:log10(<expression>)

  • expression:结果的数据类型为 double 的表达式。表示真数N。

  • 返回类型:double。

示例:

nebula> RETURN log10(100);
+------------+
| log10(100) |
+------------+
| 2.0 |
+------------+

sin()​

sin() 返回指定数字的正弦值。可以使用函数radians()将角度转化为弧度。

语法:sin(<expression>)

  • expression:结果的数据类型为 double 的表达式。

  • 返回类型:double。

示例:

nebula> RETURN sin(3);
+--------------------+
| sin(3) |
+--------------------+
| 0.1411200080598672 |
+--------------------+

asin()​

asin() 返回指定数字的反正弦值。可以使用函数radians()将角度转化为弧度。

语法:asin(<expression>)

  • expression:结果的数据类型为 double 的表达式。

  • 返回类型:double。

示例:

nebula> RETURN asin(0.5);
+--------------------+
| asin(0.5) |
+--------------------+
| 0.5235987755982989 |
+--------------------+

cos()​

cos() 返回指定数字的余弦值。可以使用函数radians()将角度转化为弧度。

语法:cos(<expression>)

  • expression:结果的数据类型为 double 的表达式。

  • 返回类型:double。

示例:

nebula> RETURN cos(0.5);
+--------------------+
| cos(0.5) |
+--------------------+
| 0.8775825618903728 |
+--------------------+

acos()​

acos() 返回指定数字的反余弦值。可以使用函数radians()将角度转化为弧度。

语法:acos(<expression>)

  • expression:结果的数据类型为 double 的表达式。

  • 返回类型:double。

示例:

nebula> RETURN acos(0.5);
+--------------------+
| acos(0.5) |
+--------------------+
| 1.0471975511965979 |
+--------------------+

tan()​

tan() 返回指定数字的正切值。可以使用函数radians()将角度转化为弧度。

语法:tan(<expression>)

  • expression:结果的数据类型为 double 的表达式。

  • 返回类型:double。

示例:

nebula> RETURN tan(0.5);
+--------------------+
| tan(0.5) |
+--------------------+
| 0.5463024898437905 |
+--------------------+

atan()​

atan() 返回指定数字的反正切值。可以使用函数radians()将角度转化为弧度。

语法:atan(<expression>)

  • expression:结果的数据类型为 double 的表达式。

  • 返回类型:double。

示例:

nebula> RETURN atan(0.5);
+--------------------+
| atan(0.5) |
+--------------------+
| 0.4636476090008061 |
+--------------------+

rand()​

rand() 返回 [0,1) 内的随机浮点数。

语法:rand()

  • 返回类型:double。

示例:

nebula> RETURN rand();
+--------------------+
| rand() |
+--------------------+
| 0.6545837172298736 |
+--------------------+

rand32()​

rand32() 返回指定范围([min, max))内的随机 32 位整数。

语法:rand32(<expression_min>,<expression_max>)

  • expression_min:结果的数据类型为 int 的表达式。表示最小值min。

  • expression_max:结果的数据类型为 int 的表达式。表示最大值max。

  • 返回类型:int。

  • 用户可以只传入一个参数,该参数会判定为max,此时min默认为0。如果不传入参数,此时会从带符号的 32 位 int 范围内随机返回。

示例:

nebula> RETURN rand32(1,100);
+---------------+
| rand32(1,100) |
+---------------+
| 63 |
+---------------+

rand64()​

rand64() 返回指定范围([min, max))内的随机 64 位整数。

语法:rand64(<expression_min>,<expression_max>)

  • expression_min:结果的数据类型为 int 的表达式。表示最小值min。

  • expression_max:结果的数据类型为 int 的表达式。表示最大值max。

  • 返回类型:int。

  • 用户可以只传入一个参数,该参数会判定为max,此时min默认为0。如果不传入参数,此时会从带符号的 64 位 int 范围内随机返回。

示例:

nebula> RETURN rand64(1,100);
+---------------+
| rand64(1,100) |
+---------------+
| 34 |
+---------------+

bit_and()​

bit_and() 返回按位进行 AND 运算后的结果。

语法:bit_and(<expression_1>,<expression_2>)

  • expression_1、expression_2:结果的数据类型为 int 的表达式。

  • 返回类型:int。

示例:

nebula> RETURN bit_and(5,6);
+--------------+
| bit_and(5,6) |
+--------------+
| 4 |
+--------------+

bit_or()​

bit_or() 返回按位进行 OR 运算后的结果。

语法:bit_or(<expression_1>,<expression_2>)

  • expression_1、expression_2:结果的数据类型为 int 的表达式。

  • 返回类型:int。

示例:

nebula> RETURN bit_or(5,6);
+-------------+
| bit_or(5,6) |
+-------------+
| 7 |
+-------------+

bit_xor()​

bit_xor() 返回按位进行 XOR 运算后的结果。

语法:bit_xor(<expression_1>,<expression_2>)

  • expression_1、expression_2:结果的数据类型为 int 的表达式。

  • 返回类型:int。

示例:

nebula> RETURN bit_xor(5,6);
+--------------+
| bit_xor(5,6) |
+--------------+
| 3 |
+--------------+

size()​

size() 返回列表或映射中元素的数量,或者返回字符串的长度。

语法:size({<expression>|<string>})

  • expression:列表或映射的表达式。
  • string:指定的字符串。
  • 返回类型:int。

示例:

nebula> RETURN size([1,2,3,4]);
+-----------------+
| size([1,2,3,4]) |
+-----------------+
| 4 |
+-----------------+
nebula> RETURN size("basketballplayer") as size;
+------+
| size |
+------+
| 16 |
+------+

range()​

range() 返回指定范围([start,end])中指定步长的值组成的列表。

语法:range(<expression_start>,<expression_end>[,<expression_step>])

  • expression_start:结果的数据类型为 int 的表达式。表示起始值start。

  • expression_end:结果的数据类型为 int 的表达式。表示结束值end。

  • expression_step:结果的数据类型为 int 的表达式。表示步长step,默认值为1。

  • 返回类型:list。

示例:

nebula> RETURN range(1,3*3,2);
+------------------+
| range(1,(3*3),2) |
+------------------+
| [1, 3, 5, 7, 9] |
+------------------+

sign()​

sign() 返回指定数字的正负号。如果数字为0,则返回0;如果数字为负数,则返回-1;如果数字为正数,则返回1。

语法:sign(<expression>)

  • expression:结果的数据类型为 double 的表达式。

  • 返回类型:int。

示例:

nebula> RETURN sign(10);
+----------+
| sign(10) |
+----------+
| 1 |
+----------+

e()​

e() 返回自然对数的底 e(2.718281828459045)。

语法:e()

  • 返回类型:double。

示例:

nebula> RETURN e();
+-------------------+
| e() |
+-------------------+
| 2.718281828459045 |
+-------------------+

pi()​

pi() 返回数学常数π(3.141592653589793)。

语法:pi()

  • 返回类型:double。

示例:

nebula> RETURN pi();
+-------------------+
| pi() |
+-------------------+
| 3.141592653589793 |
+-------------------+

radians()​

radians() 返回指定角度的弧度。

语法:radians(<angle>)

  • 返回类型:double。

示例:

nebula> RETURN radians(180);
+-------------------+
| radians(180) |
+-------------------+
| 3.141592653589793 |
+-------------------+