Published on

October 13, 2019

Cómo evitar el error de división por cero en SQL

Introducción:

Cuando realizamos cálculos de datos en SQL Server, es importante manejar la posibilidad de dividir entre cero. Dividir un número entre cero es matemáticamente indefinido y puede generar errores en tu código. En este artículo, exploraremos varios métodos para evitar el error de división por cero en SQL.

Método 1: Usando la función NULLIF

La función NULLIF es una herramienta útil para evitar errores de división por cero. Acepta dos argumentos y devuelve un valor nulo si ambos argumentos son iguales. Si los argumentos no son iguales, devuelve el valor del primer argumento. Al utilizar la función NULLIF en el denominador con un segundo argumento de valor cero, podemos evitar el error de división por cero. Sin embargo, esto puede resultar en un valor nulo en la salida. Para evitar esto, podemos utilizar la función ISNULL para reemplazar el valor nulo por un valor definido.

Ejemplo:

DECLARE @Product1 INT;
DECLARE @Product2 INT;
SET @Product1 = 50;
SET @Product2 = 0;
SELECT ISNULL(@Product1 / NULLIF(@Product2, 0), 0) AS ProductRatio;

Método 2: Usando la sentencia CASE

La sentencia CASE nos permite devolver diferentes valores según condiciones específicas. Al utilizar una sentencia CASE para verificar un valor cero en el denominador, podemos devolver un valor nulo si se cumple la condición. De lo contrario, podemos realizar la operación aritmética y devolver el resultado.

Ejemplo:

DECLARE @Product1 INT;
DECLARE @Product2 INT;
SET @Product1 = 50;
SET @Product2 = 0;
SELECT CASE WHEN @Product2 = 0 THEN NULL ELSE @Product1 / @Product2 END AS ProductRatio;

Método 3: Usando la opción SET ARITHABORT

La opción SET ARITHABORT nos permite controlar el comportamiento de la consulta. De forma predeterminada, SQL Server tiene un valor predeterminado de SET ARITHABORT ON, lo que resultará en un error de división por cero. Sin embargo, al establecer ARITHABORT en OFF, la consulta se terminará y devolverá un valor nulo en lugar de un error. Es importante tener en cuenta que el uso de esta opción puede tener implicaciones en el rendimiento y debe usarse con precaución.

Ejemplo:

SET ARITHABORT OFF;
DECLARE @Product1 INT;
DECLARE @Product2 INT;
SET @Product1 = 50;
SET @Product2 = 0;
SELECT @Product1 / @Product2 AS ProductRatio;

Conclusión:

En este artículo, hemos explorado varios métodos para evitar el error de división por cero en SQL. Es importante ser proactivo y utilizar estos mecanismos en tu código para evitar errores y garantizar la ejecución correcta de tus consultas.

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.