DBAtlas · Атлас эксплуатации баз данных

22012: division_by_zero

PostgreSQL

Что это значит?

Арифметическое выражение попыталось выполнить деление (или взятие остатка) на ноль. PostgreSQL не допускает деления на ноль и прерывает запрос.

Почему возникает?

Столбец/выражение делителя равно 0; нулевой знаменатель при вычислении отношения/процента; деление на COUNT или SUM, равные нулю; неожиданные нулевые значения в нефильтрованных данных.

Как исправить

Используйте NULLIF, чтобы возвращать NULL при нулевом знаменателе: numerator / NULLIF(denominator, 0). При желании превратите результат в значение по умолчанию с помощью COALESCE: COALESCE(numerator / NULLIF(denominator,0), 0). Либо используйте CASE WHEN denominator = 0 THEN NULL ELSE numerator/denominator END. Заранее отфильтруйте нулевые случаи в данных.

Открыть в DBAtlas →

Ещё по этой СУБД