NEO4J错误:输入“% s”无效:应为“n/N”

ljo96ir5  于 2023-04-11  发布在  其他
关注(0)|答案(2)|浏览(168)

对于下面的密码查询,我得到一个错误
Cypher Query已尝试:

match (n:attribAct) where not tolower(n.Aliases) contains tolower(n.name) set n.Aliases = n.name+","+n.Aliases as x return x;

错误:

Invalid input 's': expected 'n/N' (line 1, column 115 (offset: 114))
"match (n:attribAct) where not tolower(n.Aliases) contains tolower(n.name) set n.Aliases = n.name+","+n.Aliases as x return x;"

我该如何解决这个问题呢?非常感谢!

cotxawn7

cotxawn71#

AS关键字只能在WITHRETURN子句中使用。
您可以通过以下方式返回n

MATCH (n:attribAct) 
WHERE NOT TOLOWER(n.Aliases) CONTAINS TOLOWER(n.name) 
SET n.Aliases = n.name + "," + n.Aliases 
RETURN n;

顺便说一句,如果n.Aliases实际上是一个字符串列表(而不是逗号分隔的字符串),这将起作用:

MATCH (n:attribAct) 
WHERE NONE(a in n.Aliases WHERE TOLOWER(a) = TOLOWER(n.name)) 
SET n.Aliases = n.Aliases + n.name
RETURN n;
jgwigjjp

jgwigjjp2#

正如@BurakSerdar所说,SET命令不需要别名。
密码:

match (n:attribAct)
where not tolower(n.Aliases) contains tolower(n.name)
set n.Aliases = n.name+","+n.Aliases as x
return x;

修复:

match (n:attribAct) 
where not tolower(n.Aliases) contains tolower(n.name) 
set n.Aliases = n.name+","+n.Aliases 
return n;

相关问题