Чтобы предотвратить деление на ноль в PostgreSQL с помощью условных операторов, можно использовать оператор CASE. 14 Он позволяет проверить делитель перед делением и правильно обработать ситуацию, когда он равен нулю. 1
Пример использования: 2
SELECT CASE WHEN divisor_column <> 0 THEN dividend_column / divisor_column ELSE NULL -- или любое другое значение по умолчанию END AS result FROM your_table;
В этом примере divisorcolumn и dividendcolumn — столбцы, представляющие делимое и делитель соответственно. 2 Оператор CASE проверяет, не равно ли значение divisorcolumn нулю. 2 Если делитель не равен нулю, выполняется деление (dividendcolumn / divisor_column). 2 Если делитель равен нулю, результат устанавливается в NULL (или любое другое выбранное значение по умолчанию). 2
Ещё один способ — использовать функцию NULLIF. 14 Она заменяет делитель, равный нулю, на NULL. 4Пример использования: 4
SELECT numerator / NULLIF(denominator, 0) FROM your_table;
Таким образом, если значение denominator окажется равным нулю, оно заменяется на NULL. 4