Cypher查询:SET子句中的CONCAT和TOKENIZE

时间:2016-11-15 13:33:02

标签: neo4j cypher

我需要生成一个密码查询,我应该根据另一个属性的值设置一个属性的值,如下所示:

MATCH (n) SET n.XXX = n.YYY return n;

因此XXX将设置为YYY。但是YYY有这样的价值 - " ABCD.net/ABC-MNO-XYZ-1234"我应该删除所有特殊字符(/, - etc),然后连接分裂的子字符串。所以逻辑陈述应该像 -

MATCH (n) SET n.XXX = CONCAT(SPLIT(n.YYY, "/")) return n;

Neo4j没有任何CONCAT功能。那么如何在密码查询中完成这些工作呢?

任何帮助都将受到高度赞赏。

由于

2 个答案:

答案 0 :(得分:2)

你可以这样做:

MATCH (n:SomeNode) set n.uuid = reduce(s="",x in split(n.uuid,'/')|  s+x)

并为每个特殊字符运行此查询。

如果有很多特殊字符,请写下此查询:

UNWIND ['/','@'] as delim match (n:SomeNode) set n.uuid = reduce(s="",x in split(n.uuid,delim)|  s+x)

替换' /',' @'列出你的特殊字符。

答案 1 :(得分:1)

你的用例看起来好像要删除字符串中的字符,而neo4j确实提供了一个replace()函数,你可以利用它。

但是如果您确实想要一个join(),APOC Procedures库会在它提供的text functions中有这个。