neo4j中的参数化like查询
我想将此查询创建为参数化查询neo4j中的参数化like查询,neo4j,Neo4j,我想将此查询创建为参数化查询 var query = ["Match (name:Name)-[r:IN_CLASS]->(class:Class)-[r1:HAS_STUDENTS]->(s:Student) where id(s)=",rollno," and lower(s.Name)=~'.*",name,".*' RETURN id(s),s.Name limit 5"].join(''); 我已尝试此代码,但出现错误: var query = ["Match (name
var query = ["Match (name:Name)-[r:IN_CLASS]->(class:Class)-[r1:HAS_STUDENTS]->(s:Student) where id(s)=",rollno," and lower(s.Name)=~'.*",name,".*' RETURN id(s),s.Name limit 5"].join('');
我已尝试此代码,但出现错误:
var query = ["Match (name:Name)-[r:IN_CLASS]->(class:Class)-[r1:HAS_STUDENTS]->(s:Student) where id(s)=",rollno," and lower(s.Name)=~'.*{name}.*' RETURN id(s),s.Name limit 5"].join('');
db.query(query , {name : name} , function(err,results){
if (err) return callback(err);
if(results){
return callback(null,results);
}
else{
return callback(null,false);
}
});
请告诉我哪里错了?您不能有作为文本一部分的参数。你试过了
... WHERE ... lower(s.Name)=~'.*{name}.*'
相反,整个正则表达式需要是参数值:
... WHERE ... lower(s.Name)=~ {name}
您需要在客户端将值与*
连接到*
,并将其作为参数值传入
编辑:
您还可以在密码中连接:
... WHERE ... lower(s.Name)=~'.*'+{name}+'.*'
对于不区分大小写的regexp,请使用:
... WHERE ... s.Name =~'(?i).*'+{name}+'.*'
你能公布你的错误吗?