我正在尝试将Neo4j数据库中节点名称与给定技术名称进行比较我正在使用Spring应用程序
@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}
。
但是它返回空值。但是,如果我用实际的技术名称,它工作的很好。
2条答案
按热度按时间hgtggwj01#
将参数作为
WHERE n.name =~ {0}
传递。实际情况是参数不是从字符串中替换的,因此参数在查询中没有绑定,而是搜索字符串文字“{0}”,但总是失败。如果你想把一个正则表达式作为参数传递,你需要把“(?i)”部分放在要传递的字符串中,有效地让你的代码决定正则表达式,而不仅仅是它里面的字符串。
idfiyjo82#
您需要将正则表达式部分与参数部分分开,如下所示:
就像你在Neo4j中连接的那样。