PostgreSQLでゼロ除算を回避する
PostgreSQLでは以下のようにゼロ除算を行うと、ERROR: division by zero
というエラーが発生する。
select 1 / 0; -- ERROR: division by zero
ゼロ除算となる場合に値をNULL
として扱いたい場合は、分母に対してNULLIF()
関数を使用することでゼロ除算を回避できる。
select 1 / NULLIF(0, 0); -- NULL
ゼロ除算となる場合に値を0
として扱いたい場合は、NULLIF()
関数とCOALESCE()
関数を併用すれば良い。
select COALESCE(1 / NULLIF(0, 0), 0); -- 0
参考1(https://www.geeksforgeeks.org/how-to-avoid-division-by-zero-in-postgresql/)
参考2(https://blog.amedama.jp/entry/2017/06/29/204834)