比较运算符
比较运算符用于比较值。Cypher® 包含以下比较运算符:
-
相等:
= -
不等:
<> -
小于:
< -
大于:
> -
小于或等于:
<= -
大于或等于:
>= -
IS NULL -
IS NOT NULL以及PROPERTY_EXISTS谓词
| 有关 Cypher 如何对不同值类型进行排序和比较的更多信息,请参阅 值与类型 → 值类型的相等性、排序和比较 |
示例图
以下图表用于下方的示例
要重建该图,请在空的 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'})
示例
=)MATCH (n:Person)
WHERE n.role = 'Software developer'
RETURN n.name AS name, n.role AS role
| 名称 (name) | role(角色) |
|---|---|
|
|
|
|
行:2 |
|
<>)MATCH (n:Person)
WHERE n.role <> 'Software developer'
RETURN n.name AS name, n.role AS role
| 名称 (name) | role(角色) |
|---|---|
|
|
|
|
|
|
|
|
行:4 |
|
<)MATCH (n:Person)
WHERE n.age < 39
RETURN n.name AS name, n.age AS age
| 名称 (name) | age |
|---|---|
|
|
|
|
行:2 |
|
<=)MATCH (n:Person)
WHERE n.age <= 39
RETURN n.name AS name, n.age AS age
| 名称 (name) | age |
|---|---|
|
|
|
|
|
|
|
|
行:4 |
|
>)MATCH (n:Person)
WHERE n.age > 39
RETURN n.name AS name, n.age AS age
| 名称 (name) | age |
|---|---|
|
|
|
|
行:2 |
|
>=)MATCH (n:Person)
WHERE n.age >= 39
RETURN n.name AS name, n.age AS age
| 名称 (name) | age |
|---|---|
|
|
|
|
|
|
|
|
行:4 |
|
IS NULL 运算符MATCH (n:Person)
WHERE n.email IS NULL
RETURN n.name AS name
| 名称 (name) |
|---|
|
|
行:2 |
IS NOT NULL 运算符MATCH (n:Person)
WHERE n.email IS NOT NULL
RETURN n.name AS name, n.email AS email
| 名称 (name) | |
|---|---|
|
|
|
|
|
|
|
|
行:4 |
|
IS NOT NULL 谓词用于测试表达式是否求值为非 NULL 的值。有关 GQL 属性存在谓词(GQL 特性 G115),请参阅 PROPERTY_EXISTS 谓词。
PROPERTY_EXISTS 谓词
可选的 GQL 特性 G115 定义了 PROPERTY_EXISTS(element, propertyName) 谓词,用于测试节点或关系上是否存在某属性且该属性不为 NULL。
自 Neo4j 2026.03 版本起,Cypher 支持该 GQL 语法
MATCH (n:Person)
WHERE PROPERTY_EXISTS(n, email)
RETURN n.name AS name, n.email AS email
对于节点和关系属性,这等同于
MATCH (n:Person)
WHERE n.email IS NOT NULL
RETURN n.name AS name, n.email AS email
注意与差异
-
第二个参数必须是属性名称标识符(例如
email)。不允许使用字符串字面量和表达式。 -
如果 element 参数为
NULL,则PROPERTY_EXISTS返回NULL(符合 GQL 语义)。 -
PROPERTY_EXISTS仅适用于节点和关系属性。IS NOT NULL更通用,可以应用于任何表达式。