How to handle divide by zero error in SQL

  • How-Tos FAQs
  • December 17, 2018
Supercharge Your Snowflake SQL
with Datameer's
Data Transformation

Whenever we perform a division in SQL, we must remember to handle a ‘divide by zero’ error. Even though there is no data with value zero in the denominator, for now, we must handle the ‘divide by zero’ error because there might be data with zero value in the future. We can handle this by replacing zero value with NULL.

How to handle divide by zero error in SQL

Let us consider a table as below:

CREATE TABLE working_groups (
    name VARCHAR(50),
    number_of_member INT,
    budget FlOAT
);

INSERT INTO working_groups
SELECT 'Group 1', 10, '25000' UNION ALL
SELECT 'Group 2', 5, '20000' UNION ALL
SELECT 'Group 3', 3, '27000' UNION ALL
SELECT 'Group 4', 4, '40000' UNION ALL
SELECT 'Group 5', '0', '64000';

MySQL

-- Divide by zero handled using NULLIF function
SELECT `name`
, number_of_member
    , budget/NULLIF(number_of_member, 0) 'budget per member'
FROM working_groups;

-- Output
# name           number_of_member     budget per member
----------------------------------------------------------
Group 1                 10                   2500
Group 2                  5                   4000
Group 3                  3                   9000
Group 4                  4                   10000
Group 5                  0                   null




-- Divide by zero handled using IF function
SELECT `name`
, number_of_member
    , IF(number_of_member = 0 ,'Divide by Zero',  budget/number_of_member) 'budget per member'
FROM working_groups;

-- Output
# name         number_of_member      budget per member
----------------------------------------------------------
Group 1               10                    2500
Group 2                5                    4000
Group 3                3                    9000
Group 4                4                    10000
Group 5                0                    Divide by Zero

SQL Server

-- Divide by zero handled using NULLIF function
SELECT 'name' name
, number_of_member
    , budget/NULLIF(number_of_member, 0) 'budget per member'
FROM working_groups;

-- Output
name            number_of_member  budget per member
--------------------------------------------------
Group 1                10               2500
Group 2                 5               4000
Group 3                 3               9000
Group 4                 4               10000
Group 5                 0               NULL

-- Divide by zero handled using IIF function
SELECT name
, number_of_member
      , IIF(number_of_member = 0 ,'Divide by Zero'

           ,CAST(budget/number_of_member AS VARCHAR(10))

         ) 'budget per member'
FROM working_groups;

-- Output

name       number_of_member budget per member
----------------------------------------------------
Group 1    10               2500
Group 2    5                4000
Group 3    3                9000
Group 4    4                10000
Group 5    0                Divide by Zero

Up Next:

Read How to reset an IDENTITY column value in SQL server?