问题
最近在使用 sql 进行数值计算时,发现 sql 语句运行报错,报错信息如下:division by zero
,综合分析 sql 语句得出是在进行除法运算时,除数为 0 导致的。
解决
接下来我来介绍几种解决这种问题的方法:
NULLIF 和 COALESCE 函数
我们可以使用 NULLIF 函数检查变量是否是 0 值,如果是 0 则为 null。使用 COALESCE 函数检查分子和分母是否有 NULL 值,然后返回默认值。
例子:
SELECT
COALESCE(dividend / NULLIF(divisor, 0), default_value)
FROM xx
CASE 表达式
我们可以使用 case when 来检查除数是否为 0,如果是 0 则使用默认值。 例子:
SELECT
COALESCE(dividend / NULLIF(divisor, 0), default_value)
FROM xx
最终我采用了第一种方法,顺利的解决了问题,还需要多说的是在 postgresql sql 语句使用过程中,要注意所使用函数需要的参数的类型,遇到需要转换参数类型的情况,可以使用 case 函数进行类型转换。
小结
本文讲述了我遇到的 PostgreSQL 进行数值计算时遇到的 division by zero 问题的情况及解决方法。