WHERE在MATCH或者OPTINALMATCH语句中添加约束,或者与WITH起使用来过滤结果。 WHERE不能单独使用, 它只能作为MATCH、 OPTINAL MATCH、 START和WITH的 一部分。 如果是在WITH和START中, 它用于过滤结果。 对于MATCH和OPTTNAL MATCH, WHERE为模式增加约束, 它不能看作是匹配完成后的结果过滤。
基本比较:
sql
MATCH (person:Person)
WHERE person.age > 25
RETURN person.name;
这个查询会匹配年龄大于 25 岁的所有人,并返回他们的姓名。
多个条件:
sql
MATCH (movie:Movie)
WHERE movie.released >= 2000 AND movie.released <= 2010
RETURN movie.title;
这个查询会返回在 2000 年到 2010 年之间发布的电影的标题。
字符串匹配:
sql
MATCH (person:Person)
WHERE person.name CONTAINS 'John'
RETURN person.name;
这个查询会返回姓名中包含 "John" 的所有人。
模式匹配:
sql
MATCH (actor:Person)-[:ACTED_IN]->(movie:Movie)
WHERE actor.name = 'Tom Hanks' AND movie.released > 2000
RETURN actor.name, movie.title;
这个查询会返回 Tom Hanks 在 2000 年之后参演过的电影。
使用正则表达式:
sql
MATCH (person:Person)
WHERE person.name =~ '(?i).*smith.*'
RETURN person.name;
这个查询会返回姓名中包含 "smith"(不区分大小写)的所有人。
筛选属性是否存在:
sql
MATCH (person:Person)
WHERE exists(person.age)
RETURN person.name;
这个查询会返回那些有年龄属性的人的姓名。
对属性值进行 NULL 判断:
sql
MATCH (person:Person)
WHERE person.age IS NULL
RETURN person.name;
这个查询会返回年龄属性为空的人的姓名。