Neo4j 运行不区分大小写的cypher查询
是否可以在neo4j上运行不区分大小写的密码查询 试试看: 当我输入以下内容时:Neo4j 运行不区分大小写的cypher查询,neo4j,case-insensitive,cypher,Neo4j,Case Insensitive,Cypher,是否可以在neo4j上运行不区分大小写的密码查询 试试看: 当我输入以下内容时: start n=node(*) match n-[]->m where (m.name="Neo") return m start n=node(*) match n-[]->m where (m.name="neo") return m 它返回一行。但当我输入以下内容时: start n=node(*) match n-[]->m where (m.name="Neo")
start n=node(*)
match n-[]->m
where (m.name="Neo")
return m
start n=node(*)
match n-[]->m
where (m.name="neo")
return m
它返回一行。但当我输入以下内容时:
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”。有没有一种简单的方法可以运行不区分大小写的查询?是的,通过使用不区分大小写的正则表达式:
WHERE m.name =~ '(?i)neo'
另一种方法是:
WHERE LOWER(m.Name) = LOWER("Neo")
如果您使用的是Neo4j客户端(.NET):
Client.Cypher.Match(((m:Entity)”)
.Where(“LOWER(m.Name)=LOWER({Name})”)
.WithParam(“名称”,inputName)
.Return(m=>m.As())
.结果
.FirstOrDefault();
如果有人在研究如何使用参数执行此操作,我会这样做
query = "{}{}{}".format('Match (n) WHERE n.pageName =~ "'"(?i)", name, '" RETURN n')
“name”是变量或参数您可以将参数传递给不区分大小写的正则表达式,如:
其中m.name=~'(?i)({param})=~运算符不使用IndexShow我可以在此处传递参数吗
'(?i)$param'
和'(?!)'+$param
不起作用。我认为您必须使用整个正则表达式字符串作为参数。此解决方案更易于应用parameter@rotgers使用LOWER()函数不会影响在实际字符串上定义的索引查找吗?@Partha,不知道,我已经一年多没有接触过Neo4j了。FYI-LOWER()已替换为toLower()。你能解释一下它是如何工作的,甚至是如何读取它的吗?“{}{}{}{}”
看起来像占位符,.format
将按顺序接收参数或替换占位符。可读性肯定是这里的一个问题,但更大的问题似乎是这只是字符串连接而不是参数化。所以在中,我可以做这个$”匹配(n),其中n.pageName={(?I)}name返回n
(C#字符串插值)