42

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

试试看: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

4 回答 4

56

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

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

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

于 2012-11-18T10:54:13.353 回答
10

另一种方法是:

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();
于 2017-01-05T15:46:48.323 回答
2

如果有人正在研究如何使用参数执行此操作,我设法做到了。

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

并且“名称”是变量或您的参数

于 2018-11-21T12:47:59.343 回答
0

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

WHERE m.name =~'(?i)({param})

于 2020-11-25T06:46:05.867 回答