我正在尝试将Neo4j数据库中的节点名称与给定的技术名称进行比较。我正在使用Spring Application。
@Query("MATCH (n) WHERE n.name =~ '(?i){0}' RETURN n.name")
String getTechnology(String technologyname);
请求就像
MATCH (n)
WHERE n.name =~ '(?i){0}'
RETURN n.name
带有参数{0=AVM}
。
但是它返回null。但是,如果我使用实际的技术名称,它就可以正常工作。
答案 0 :(得分:0)
将参数传递为WHERE n.name =~ {0}
。发生的情况是该参数未从字符串内部替换,因此该参数在查询中没有绑定,而是在搜索始终失败的字符串文字“ {0}”。
如果要将正则表达式作为参数传递,则需要在要传递的字符串中放入“(?i)”部分,从而有效地让您的代码确定正则表达式,而不仅仅是内部的字符串。