如何匹配在间隔中定义了起始字母的名称

How to MATCH names which starting letters are defined in an interval

我有一个电影数据集,其中包含导演和女演员的名字。我想抓取所有以 B 到 J 之间的字母开头的女演员名字。除了使用 'OR' MATCH (a:ACTOR)-[:PLAYED]-> (:MOVIE) WHERE a.Name STRATS WITH 'B' OR a.Name STARTS WITH 'C' ...,还有更复杂的方法吗?

我很感激任何关于此事的建议。

你可以使用 Cypher Regular expressions

MATCH (a:ACTOR)-[:PLAYED]->(:MOVIE)
WHERE  toLower(a.name) =~ '[b-j].*'
RETURN a

正在检查以 b 和 j 之间的字符开头的所有名称。末尾的通配符匹配所有后缀。

您也可以使用 IN,但在这种情况下您必须提供要匹配的整个字符列表:

MATCH (a:ACTOR)-[:PLAYED]->(:MOVIE)
WHERE  left(toLower(n.name),1) in ['b','c','d','e','f','g','h','i','j']
RETURN n.name

我在这两种情况下都使用了 toLower 以确保匹配不区分大小写。
在第二种方法中,我使用 left 函数获取名称的第一个字符并检查它是否在给定列表中。
存在 Starts With 运算符。但它不允许匹配列表 (IN)。