内置数学函数¶
本文介绍 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>, <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() 返回指定数字的幂(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_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 |
+-------------------+