Saltar al contenido

¿Cómo evitar el error “dividir por cero” en SQL?

Solución:

Para evitar un error de “División por cero” lo hemos programado así:

Select Case when divisor=0 then null
Else dividend / divisor
End ,,,

Pero aquí hay una forma mucho mejor de hacerlo:

Select dividend / NULLIF(divisor, 0) ...

Ahora el único problema es recordar el bit NullIf, si utilizo la clave “https://foroayuda.es/”.

En caso de que desee devolver cero, en caso de que suceda una devisión cero, puede usar:

SELECT COALESCE(dividend / NULLIF(divisor,0), 0) FROM sometable

Por cada divisor que sea cero, obtendrá un cero en el conjunto de resultados.

Esta parecía ser la mejor solución para mi situación cuando trataba de abordar la división por cero, lo que sucede en mis datos.

Suponga que desea calcular las proporciones entre hombres y mujeres para varios clubes escolares, pero descubre que la siguiente consulta falla y emite un error de división por cero cuando intenta calcular la proporción para el Club El Señor de los Anillos, que no tiene mujeres. :

SELECT club_id, males, females, males/females AS ratio
  FROM school_clubs;

Puedes usar la función NULLIF para evitar la división por cero. NULLIF compara dos expresiones y devuelve nulo si son iguales o la primera expresión en caso contrario.

Reescribe la consulta como:

SELECT club_id, males, females, males/NULLIF(females, 0) AS ratio
  FROM school_clubs;

Cualquier número dividido por NULL da NULLy no se genera ningún error.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *