首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Neo4j:密码中的无效输入

Neo4j:密码中的无效输入
EN

Stack Overflow用户
提问于 2016-02-09 06:10:42
回答 1查看 16K关注 0票数 1

我正在进行一个项目,目的是建立一个检索生物医学信息的系统(例如,生物医学实体,如药物、疾病和基因,以及它们之间的关系)。当我试图检索数据库以使用cypher语句查找特定疾病时:

用于密码字符串MATCH (m:Disease) WHERE m.disease_name =~ '(?i)"+disease+"' RETURN m

如果该疾病的名称为2'-benzoyloxycinnamaldehyde4-[1-ALLYL-7-(TRIFLUOROMETHYL)-1H-INDAZOL-3-YL]BENZENE-1,3-DIOL,将出现以下消息的例外情况:

无效输入‘:预期0.9,'.','E','e',标识符,空格,节点标签,'[',"=~",IN,开始,结束,包含,IS,'^','*','/',’‘,'%','+',’,'=‘’,‘’=‘’,‘<>’,‘’,‘,"<=",">=",以及,XOR,OR,LOAD CSV,开始,匹配,解除,合并,创建,设置,删除,删除,FOREACH,与,返回,联合,';‘或输入结束(第1行,第53栏(偏移: 52))“匹配( n1 :药物)-x-(N2:疾病)返回n1限制25”

我怎么才能解决这个问题?非常感谢!

EN

回答 1

Stack Overflow用户

发布于 2016-02-09 16:57:42

实际上有两个不同的查询,它们有不同的问题:

  1. 第一个查询由以下语句生成: 匹配(m:疾病)其中m.disease_name =~ '(?i)"+disease+"‘返回m’; 由于您使用单引号作为regexp字符串分隔符,如果disease值包含单引号,那么这将过早结束regexp。您有几种选择,列在“提高质量”中:
代码语言:javascript
运行
复制
- Escape (using a preceding backslash) all single-quote characters in `disease`.
- Use double-quotes as the regexp string delimiter (which requires escape characters as well, but `disease` does not need to be changed). I am presuming that `disease` (which actually seems to be a chemical name) will never include a double-quote:

"MATCH (m: disease )其中m.disease_name =~ \"(?i)“+disease+”\“返回m";

-将disease值作为参数传递。没有转义是必要的,如果您需要多次进行本质上相同的查询,则查询将更快。然而,传入的参数值必须以"(?i)“开头。

“匹配(m:疾病)其中m.disease_name =~ {disease}返回m";

  1. 第二个查询有一个简单的错误。它有一个额外的双引号在结尾: 匹配( n1 :药物)-x-(N2:疾病)返回n1极限25“ 它应该是: 匹配( n1 :药物)-x-(N2:疾病)返回n1限制25
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35285080

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档