我使用以下子句运行了 Cypher 查询:
按 xxx 描述订购
其中
xxx
是一个字符串,如 ["Coyote"," Eastern Coyote"]
。我希望它以第一个字母 ASC 排序,如下所示:[" Eastern Coyote","Coyote"]
。
但结果还是这样:["Coyote"," Eastern Coyote"]
.
仅供参考:我问过chatgpt,它说neo4j中的顺序取决于字母表的unicode,但这仍然没有意义,因为“E”比“C”大
您可以在以下示例中对列表中的项目进行排序:
WITH [ "Coyote"," Eastern Coyote"] as lst
UNWIND lst as l
WITH l ORDER by l
RETURN collect(l) as sorted_lst
WITH [ "Coyote"," Eastern Coyote"] as lst
RETURN apoc.coll.sort(lst) as sorted_lst
结果:
╒════════════════════════════╕
│"sorted_lst" │
╞════════════════════════════╡
│[" Eastern Coyote","Coyote"]│
└────────────────────────────┘
你犯了几个重大错误:
["Coyote"," Eastern Coyote"]
是字符串的列表,而不是字符串。
ORDER BY xxx DESC
按 降序 顺序排序,而不是升序。
你说:
...仍然没有意义,因为“E”比“C”大
但是字符串“Eastern Coyote”以 space 字符开头,因此您应该将“”与“C”进行比较。 “ ”字符的词汇值低于“C”。因此,按
降序顺序对列表项进行排序后,
["Coyote"," Eastern Coyote"]
就是正确答案。
您需要仔细检查字符串值以删除无关的空格。
此外,要以
升序顺序(默认顺序)返回
xxx
中的字符串列表,您可以使用以下代码片段:
...
UNWIND xxx AS y
WITH y ORDER BY y
RETURN COLLECT(y) AS result
或者,如果您确实想按 降序 顺序返回列表:
...
UNWIND xxx AS y
WITH y ORDER BY y DESC
RETURN COLLECT(y) AS result