运行不区分大小写的密码查询

时间:2012-11-18 10:23:42

标签: neo4j case-insensitive cypher

是否可以在neo4j上运行不区分大小写的cypher查询?

试试:http://console.neo4j.org/

当我输入此内容时:

start n=node(*) 
match n-[]->m 
where (m.name="Neo") 
return m

它返回一行。但是当我输入这个:

start n=node(*) 
match n-[]->m 
where (m.name="neo") 
return m

它不会返回任何东西;因为名称保存为“Neo”。是否有一种简单的方法来运行不区分大小写的查询?

4 个答案:

答案 0 :(得分:42)

是的,使用不区分大小写的正则表达式:

WHERE m.name =~ '(?i)neo'

http://neo4j.com/docs/developer-manual/current/cypher/clauses/where/#where-case-insensitive-regular-expressions

答案 1 :(得分:9)

另一种方式是:

WHERE LOWER(m.Name) = LOWER("Neo")

如果您使用的是Neo4j客户端(.NET):

Client.Cypher.Match("(m:Entity)")
    .Where("LOWER(m.Name) = LOWER({name})")
    .WithParam("name", inputName)
    .Return(m => m.As<Entity>())
    .Results
    .FirstOrDefault();

答案 2 :(得分:1)

如果有人正在寻找如何使用参数来执行此操作,那么我设法做到了。

query = "{}{}{}".format('Match (n) WHERE n.pageName =~ "'"(?i)", name, '" RETURN n')

“ name”是变量或您的参数

答案 3 :(得分:0)

您可以将参数传递给不区分大小写的正则表达式,例如:

m.name在哪里=〜'(?i)({param})