如何在Cypher中拼接查询返回的有序字符串结果?
可以直接在Cypher中实现有序字符串拼接
你可以通过Cypher内置函数或APOC扩展库完成这个需求,核心是先按指定顺序收集所有字符串,再执行拼接:
方法一:使用Cypher内置函数
通过collect()按排序后的顺序收集字符串,再用reduce()完成拼接:
MATCH (n:Node) WHERE n.O127_H6_E2348_69_193637c_0_node IS NOT NULL ORDER BY n.O127_H6_E2348_69_193637c_0_node MATCH (s:Sequence) WHERE s.name = n.name WITH collect(s.sequence) AS orderedSequences RETURN reduce(fullStr = "", seq IN orderedSequences | fullStr + seq) AS concatenatedSequence
collect(s.sequence)会严格保留前面ORDER BY的排序结果,将所有字符串存入列表reduce()遍历列表,把每个字符串依次拼接到初始空字符串上,最终生成完整的拼接结果
方法二:使用APOC扩展库(更简洁)
如果你启用了Neo4j的APOC扩展库,可以用apoc.text.join()直接拼接有序列表:
MATCH (n:Node) WHERE n.O127_H6_E2348_69_193637c_0_node IS NOT NULL ORDER BY n.O127_H6_E2348_69_193637c_0_node MATCH (s:Sequence) WHERE s.name = n.name WITH collect(s.sequence) AS orderedSequences RETURN apoc.text.join(orderedSequences, "") AS concatenatedSequence
apoc.text.join()接受两个参数:待拼接的字符串列表和分隔符,传入空字符串即可直接拼接所有元素,顺序与收集时一致
内容的提问来源于stack exchange,提问作者Calciumm502
相关产品推荐
相关产品推荐

