Divide by zero error encountered

Blog Advpl - Share knowledge

Divide by zero error encountered

3 de setembro de 2014 Funções 0

Usando NULLIF e COALESCE

Algumas vezes podemos nos deparar com a seguinte mensagem “Divide by zero error encountered” numa consulta SQL onde por exemplo temos uma divisão
Num caso como esse se o conteúdo do campo D1_QUANT for zero, ocorrerá um erro pois não se divida algo por zero, para evitar um erro indesejável, existe uma função SQL chamada NULLIF(expressao1, expressao2) se o resultado da primeira expressão for igual a segunda, o resultado será trocado por NULL.

A consulta ficaria assim:

E para o resulta não apresentar o conteúdo NULL Use a função COALESCE Ficaria assim: COALESCE(D1_CUSTO/ NULLIF(D1_QUANT ,0)- B9_CM1,0) DIFB9 Existem outras formas para tratar este erro que é por exemplo usando a função CASE A consulta ficaria assim:

Caso o resultado do campo D1_QUANT for maior que zero, então faça o calculo, senão coloque zero. Comparando as duas formas apresentadas acima COALESCE(D1_CUSTO/ NULLIF(D1_QUANT ,0)- B9_CM1,0) DIFB9 ou CASE WHEN D1_QUANT > 0 THEN ((D1_CUSTO/D1_QUANT)- B9_CM1) ELSE 0 END DIFB9

 

Deixe uma resposta