我有一个电影数据集,其中包含导演和女演员的名字。我想捕捉所有女演员的名字,以字母B到J之间的开头。除了使用'OR' MATCH (a:ACTOR)-[:PLAYED]-> (:MOVIE) WHERE a.Name STRATS WITH 'B' OR a.Name STARTS WITH 'C' ...,有没有更复杂的方法来做到这一点?我非常感谢您对此事的任何建议。
MATCH (a:ACTOR)-[:PLAYED]-> (:MOVIE) WHERE a.Name STRATS WITH 'B' OR a.Name STARTS WITH 'C' ...
mzillmmw1#
您可以使用Cypher正则表达式
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)进行匹配。
toLower
left
Starts With
1条答案
按热度按时间mzillmmw1#
您可以使用Cypher正则表达式
检查所有以b和j之间的字符开头的名称。结尾的通配符匹配所有后缀。
您也可以使用IN,但在这种情况下,您必须提供要匹配的整个字符列表:
我在这两种情况下都使用了
toLower
,以确保匹配不区分大小写。在第二种方法中,我使用
left
函数来获取名称的第一个字符,并检查它是否在给定的列表中。存在
Starts With
运算符。但它不允许与列表(IN)进行匹配。