比较运算符

比较运算符用于比较值。Cypher® 包含以下比较运算符:

  • 相等:=

  • 不相等:<>

  • 小于:<

  • 大于:>

  • 小于或等于:<=

  • 大于或等于:>=

  • IS NULL

  • IS NOT NULL

有关 Cypher 如何排序和比较不同值类型的更多信息,请参阅 值和类型 → 相等、排序和值类型的比较

示例图

以下图用于以下示例

predicate operators

要在空的 Neo4j 数据库中重新创建该图,请运行以下查询

CREATE (alice:Person {name:'Alice', age: 65, role: 'Project manager', email: 'alice@company.com'}),
       (cecil:Person {name: 'Cecil', age: 25, role: 'Software developer', email: 'cecil@private.se'}),
       (cecilia:Person {name: 'Cecilia', age: 31, role: 'Software developer'}),
       (charlie:Person {name: 'Charlie', age: 61, role: 'Security engineer'}),
       (daniel:Person {name: 'Daniel', age: 39, role: 'Director', email: 'daniel@company.com'}),
       (eskil:Person {name: 'Eskil', age: 39, role: 'CEO', email: 'eskil@company.com'})

示例

示例 1. 比较运算符
相等运算符(=
MATCH (n:Person)
WHERE n.role = 'Software developer'
RETURN n.name AS name, n.role AS role
结果
姓名 角色

"Cecil"

"软件开发人员"

"Cecilia"

"软件开发人员"

行数:2

不相等运算符(<>
MATCH (n:Person)
WHERE n.role <> 'Software developer'
RETURN n.name AS name, n.role AS role
结果
姓名 角色

"Alice"

"项目经理"

"Charlie"

"安全工程师"

"Daniel"

"总监"

"Eskil"

"CEO"

行数:4

小于运算符(<
MATCH (n:Person)
WHERE n.age < 39
RETURN n.name AS name, n.age AS age
结果
姓名 年龄

"Cecil"

25

"Cecilia"

31

行数:2

小于或等于运算符(<=
MATCH (n:Person)
WHERE n.age <= 39
RETURN n.name AS name, n.age AS age
结果
姓名 年龄

"Cecil"

25

"Cecilia"

31

"Daniel"

39

"Eskil"

39

行数:4

大于运算符(>
MATCH (n:Person)
WHERE n.age > 39
RETURN n.name AS name, n.age AS age
结果
姓名 年龄

"Alice"

65

"Charlie"

61

行数:2

大于或等于运算符(>=
MATCH (n:Person)
WHERE n.age >= 39
RETURN n.name AS name, n.age AS age
结果
姓名 年龄

"Alice"

65

"Charlie"

61

"Daniel"

39

"Eskil"

39

行数:4

IS NULL 运算符
MATCH (n:Person)
WHERE n.email IS NULL
RETURN n.name AS name
结果
姓名

"Cecilia"

"Charlie"

行数:2

IS NOT NULL 运算符
MATCH (n:Person)
WHERE n.email IS NOT NULL
RETURN n.name AS name, n.email AS email
结果
姓名 邮箱

"Alice"

"alice@company.com"

"Cecil"

"cecil@private.se"

"Daniel"

"daniel@company.com"

"Eskil"

"eskil@company.com"

行数:4

链式比较运算符

比较运算符的链式连接没有限制。如果链式连接两个或多个比较运算符,则每个比较实际上都由一个 AND 运算符分隔(尽管语法上不需要此 AND)。例如,如果 a, b, c, …​, z 是表达式,并且 op1, op2, …​, opN 是比较运算符,则以下表达式是等效的

等效表达式
a op1 b op2 c ... y opN z;
a op1 b AND b op2 c AND ... y opN z

请注意,a op1 b op2 c 并不意味着 ac 之间存在任何类型的比较。例如,在 x < y > z 中,xz 不进行比较。

链式相等运算符

在 Cypher 中,=<> 的链式连接以特殊方式处理。具体来说,1=1=true 等效于 1=1 AND 1=true,而不是 (1=1)=true1=(1=true)。例如,以下表达式是等效的。

等效表达式
a < b = c <= d <> e;
a < b AND b = c AND c <= d AND d <> e
© . All rights reserved.