如何处理select语句的除以0?

时间:2014-01-12 21:15:59

标签: php mysql divide-by-zero

我这样做

    $query4 = "(
                 SELECT count(*) 
                 FROM checklist c
                 JOIN task AS t ON t.id = c.task_id AND t.active=1
                 WHERE c.placement_id = m.id
               ) / (
                 SELECT count(*) 
                 FROM task 
                 WHERE active = 1
               )";

在php中我坚持使用更大的sql字符串。问题是上面的第二个选择,可能是0.在它为0的情况下,我希望除法自动为1(就像把整个query4变成1)。

有谁知道怎么做?

感谢。

1 个答案:

答案 0 :(得分:3)

在你的情况下,最简单的改变可能就是:

$query4 = "(
             SELECT count(*) 
             FROM checklist c
             JOIN task AS t ON t.id = c.placement_id AND t.active=1
             WHERE c.placement_id = m.id
           ) / (
             SELECT (case when count(*) > 0 then count(*) end)
             FROM task 
             WHERE active = 1
           )";

这会将0值替换为NULL - 因此除法将返回NULL而不是错误。