跳转至

内置数学函数

本文介绍 NebulaGraph 支持的数学函数。

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>, <digit>)

  • expression:结果的数据类型为 double 的表达式。
  • digit:小数位数。小于 0 时 ,在小数点左侧做四舍五入。数据类型为 int。
  • 返回类型: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                 |
+-----------------------+

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_xexpression_y:结果的数据类型为 double 的表达式。表示直角三角形的边长xy
  • 返回类型:double。

示例:

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

pow()

pow() 返回指定数字的幂(xy)。

语法: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 的幂(ex)。

语法:exp(<expression>)

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

示例:

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

exp2()

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

语法:exp2(<expression>)

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

示例:

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

log()

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

语法:log(<expression>)

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

示例:

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

log2()

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

语法:log2(<expression>)

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

示例:

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

log10()

log10() 返回以 10 为底的对数(\(log_{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_1expression_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_1expression_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_1expression_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 |
+-------------------+

最后更新: September 4, 2023