У меня есть SQL-запрос, который использовался для возникновения исключения Divide By Zero, я завернул его в оператор CASE
, чтобы это не происходило. Есть ли более простой способ сделать это?Простой способ предотвратить ошибку Divide By Zero в SQL
Вот мой код:
Percentage = CASE WHEN AttTotal <> 0 THEN (ClubTotal/AttTotal) * 100 ELSE 0 END
Это зависит от того, как вы wan't ваш запрос и результат себя, когда 'AttTotal' является 0 или NULL, так что нет общего пути делать это. Я бы сказал, что ваш запрос в порядке. Даже если вы будете писать свой запрос по-разному, используя 'ISNULL' или' NULLIF' в конце, он, скорее всего, выполнит то же самое. –
Как было указано другими, логика в этом заявлении CASE не имеет для нас никакого смысла. См. Мой комментарий к моему ответу для краткого объяснения, а затем выберите, хотите ли вы свой первоначальный ответ или мой. Мой ответ был бы более обычным решением. –
Возможный дубликат [Как избежать ошибки «делить на ноль» в SQL?] (Http://stackoverflow.com/questions/861778/how-to-avoid-the-divide-by-zero-error-in- sql) –