比较符¶
Nebula Graph 支持的比较符如下。
| 符号 | 说明 |
|---|---|
= |
赋值 |
+ |
加法 |
- |
减法 |
* |
乘法 |
/ |
除法 |
== |
相等 |
!=, <> |
不等于 |
> |
大于 |
>= |
大于等于 |
< |
小于 |
<= |
小于等于 |
% |
取模 |
- |
负数符号 |
IS NULL |
为 NULL |
IS NOT NULL |
不为 NULL |
IS EMPTY |
不存在 |
IS NOT EMPTY |
存在 |
比较操作的结果是true或者false。
Note
- 比较不同类型的值通常没有定义,结果可能是
NULL或其它。
EMPTY当前仅用于判断,不支持函数或者运算操作,包括且不限于GROUP BY、count()、sum()、max()、hash()、collect()、+、*。
OpenCypher 兼容性¶
openCypher 中没有EMPTY,因此不支持在 MATCH 语句中使用EMPTY。
示例¶
==¶
字符串比较时,会区分大小写。不同类型的值不相等。
Note
nGQL 中的相等符号是==,openCypher 中的相等符号是=。
```ngql nebula> RETURN 'A' == 'a', toUpper('A') == toUpper('a'), toLower('A') == toLower('a'); +------------+------------------------------+------------------------------+ | ("A"=="a") | (toUpper("A")==toUpper("a")) | (toLower("A")==toLower("a")) | +------------+------------------------------+------------------------------+ | false | true | true | +------------+------------------------------+------------------------------+
nebula> RETURN '2' == 2, toInteger('2') == 2; +----------+---------------------+ | ("2"==2) | (toInteger("2")==2) | +----------+---------------------+ | false | true | +----------+---------------------+ ```
>¶
```ngql nebula> RETURN 3 > 2; +-------+ | (3>2) | +-------+ | true | +-------+
nebula> WITH 4 AS one, 3 AS two \ RETURN one > two AS result; +--------+ | result | +--------+ | true | +--------+ ```
>=¶
ngql
nebula> RETURN 2 >= "2", 2 >= 2;
+----------+--------+
| (2>="2") | (2>=2) |
+----------+--------+
| __NULL__ | true |
+----------+--------+
<¶
ngql
nebula> YIELD 2.0 < 1.9;
+---------+
| (2<1.9) |
+---------+
| false |
+---------+
<=¶
ngql
nebula> YIELD 0.11 <= 0.11;
+--------------+
| (0.11<=0.11) |
+--------------+
| true |
+--------------+
!=¶
ngql
nebula> YIELD 1 != '1';
+----------+
| (1!="1") |
+----------+
| true |
+----------+
IS [NOT] NULL¶
```ngql nebula> RETURN null IS NULL AS value1, null == null AS value2, null != null AS value3; +--------+----------+----------+ | value1 | value2 | value3 | +--------+----------+----------+ | true | NULL | NULL | +--------+----------+----------+
nebula> RETURN length(NULL), size(NULL), count(NULL), NULL IS NULL, NULL IS NOT NULL, sin(NULL), NULL + NULL, [1, NULL] IS NULL; +--------------+------------+-------------+--------------+------------------+-----------+-------------+------------------+ | length(NULL) | size(NULL) | count(NULL) | NULL IS NULL | NULL IS NOT NULL | sin(NULL) | (NULL+NULL) | [1,NULL] IS NULL | +--------------+------------+-------------+--------------+------------------+-----------+-------------+------------------+ | NULL | NULL | 0 | true | false | NULL | NULL | false | +--------------+------------+-------------+--------------+------------------+-----------+-------------+------------------+
nebula> WITH {name: null} AS map \ RETURN map.name IS NOT NULL; +----------------------+ | map.name IS NOT NULL | +----------------------+ | false | +----------------------+
nebula> WITH {name: 'Mats', name2: 'Pontus'} AS map1, \ {name: null} AS map2, {notName: 0, notName2: null } AS map3 \ RETURN map1.name IS NULL, map2.name IS NOT NULL, map3.name IS NULL; +-------------------+-----------------------+-------------------+ | map1.name IS NULL | map2.name IS NOT NULL | map3.name IS NULL | +-------------------+-----------------------+-------------------+ | false | false | true | +-------------------+-----------------------+-------------------+
nebula> MATCH (n:player) \ RETURN n.player.age IS NULL, n.player.name IS NOT NULL, n.player.empty IS NULL; +----------------------+---------------------------+------------------------+ | n.player.age IS NULL | n.player.name IS NOT NULL | n.player.empty IS NULL | +----------------------+---------------------------+------------------------+ | false | true | true | | false | true | true | ... ```
IS [NOT] EMPTY¶
```ngql nebula> RETURN null IS EMPTY; +---------------+ | NULL IS EMPTY | +---------------+ | false | +---------------+
nebula> RETURN "a" IS NOT EMPTY; +------------------+ | "a" IS NOT EMPTY | +------------------+ | true | +------------------+
nebula> GO FROM "player100" OVER * WHERE properties($$).name IS NOT EMPTY YIELD dst(edge); +-------------+ | dst(EDGE) | +-------------+ | "team204" | | "player101" | | "player125" | +-------------+ ```