MySQL NULLIF?
Summary: in this tutorial, you will learn about the MySQL NULLIF function and how to use it to prevent the division by zero error in a query.
Introduction to MySQL NULLIF function
The
NULLIF
function is one of the control flow functions that accepts 2 arguments. The NULLIF
function returns NULL
if the first argument is equal to the second argument, otherwise it returns the first argument.
The syntax of the
NULLIF
function is as follows:
The
NULLIF
function returns NULL
if expression_1 = expression_2
is true
, otherwise it returns expression_1
Notice that the
NULLIF
function is similar to the following expression that uses the CASE expression:
Note that you should not confuse the
NULLIF
function a similar function called IFNULL function.MySQL NULLIF examples
Let’s take a look at some examples of using the
NULLIF
function to understand how it works.
How the statements work.
NULIF(1,1)
returnsNULL
because 1 is equal 1.NULLIF(1,2)
returns 1, which is the first argument, because 1 is not equal 2.NULLIF('MySQL NULLIF','MySQL NULLIF')
returnsNULL
because two arguments are the same stringNULLIF('MySQL NULLIF','MySQL NULLIF')
returnsMySQL NULLIF
because two strings are not equal.NULLIF(1,NULL)
returns 1 because 1 is not equal toNULL
NULLIF(NULL,1)
return the first argument i.e.,NULL
, becauseNULL
is not equal to 1.
Using NULLIF function to prevent division by zero error
We often use the
NULLIF
function to prevent the division by zero error in a query. If the MySQL server has ERROR_FOR_DIVISION_BY_ZERO
mode enabled, it will issue an error when a division by zero occurred.
See the following statement:
In this case, you can use the
NULLIF
function to prevent the division by zero as follows:
Because zero is equal to zero, the expression
NULLIF(0,0)
returns NULL. As the result, the statement returns NULL.
Let’s take a look at the
orders
table in the sample database.
First, to get all orders created in June 2003, you use the following query:
Second, calculate the number of shipped orders / the number of cancelled orders in June 2003, you use the SUM and IF functions.
MySQL issues an error because in June 2003 there was no cancelled order created. It means that expression
SUM(IF(status = 'Cancelled',1,0))
returns zero.
Third, to prevent the division by zero error, you use the
NULLIF
function as the following query:
Because there was no cancelled order created in June 2003, the
SUM(IF(status = 'Cancelled',1,0)
expression returns zero, which also makes the NULLIF(SUM(IF(status = 'Cancelled',1,0),0)
expression returns a NULL
value.
In this tutorial, we have introduced you to
NULLIF
function, which is very handy in some cases such as preventing division by zero error in queries.
0 comments:
Post a Comment