在 neo4j 中我正在查询
MATCH (n)-[t:x{x:"1a"}]->()
WHERE n.a > 1 OR n.b > 1 AND toFloat(n.a) / (n.a+n.b) * 100 < 90
RETURN DISTINCT n, toFloat(n.a) / (n.a + n.b) * 100
ORDER BY toFloat(n.a) / (n.a + n.b) * 100 DESC
LIMIT 10
但是我得到了/ by zero
错误。
由于我声明 n.a 或 n.b 之一应该为 1,如果两者都为零,则应该跳过该行,并且我不应该收到此错误。这看起来像是 Neo4j 中的逻辑问题。我删除AND toFloat(n.a)/(n.a+n.b)*100 < 90
时没有问题来自 WHERE 子句。但我希望结果只低于 90。我该如何克服这个问题?
最佳答案
n.a
或 n.b
可以为负数吗?我能够通过以下方式重现此内容:
WITH -2 AS na, 2 AS nb
WHERE (na > 1 OR nb > 1) AND toFloat(na)/(na+nb)*100 < 90
RETURN na, nb
我得到:/by zero
也许尝试将 WHERE
子句更改为:
WITH -2 AS na, 2 AS nb
WHERE (na + nb > 0) AND toFloat(na)/(na+nb)*100 < 90
RETURN na, nb
我得到:零行。
关于Neo4j (/) 除以零 ( 0 ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32209065/