Neo4j划分(/)由零(0)

时间:2015-08-25 16:16:57

标签: neo4j cypher division divide-by-zero

在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中的逻辑问题。从WHERE子句中删除AND toFloat(n.a)/(n.a+n.b)*100 < 90时没有问题。但我希望结果只低于90.我怎么能克服这个?

1 个答案:

答案 0 :(得分:2)

n.an.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

我得到:零行。