A Comprehensive Look at MySQL IS NULL Operator?
Summary: in this tutorial, you will learn how to use the MySQL IS NULL operator to test whether a value is NULL or not.
Introduction to MySQL IS NULL operator
To test whether a value is
NULL
or not, you use the IS NULL
operator. The following show syntax of the IS NULL
operator:
If the value is
NULL
, the expression returns true. Otherwise, it returns false.
Note that MySQL does not have the built-in
BOOLEAN
type. It uses the TINYINT(1)
to represent the BOOLEAN
values i.e., true means 1 and false means 0.
Because the
IS NULL
is a comparison operator, you can use it anywhere that an operator can be used e.g., in the SELECT
or WHERE
clause. See the follow example:
To check if a value is not
NULL
, you use IS NOT NULL
operator as follows:
This expression returns true (1) if the value is not
NULL
. Otherwise, it returns false (0). Consider the following example:MySQL IS NULL examples
We will use the
customers
table in the sample database for the demonstration.
To get customers who do not have sales representative, you use the
IS NULL
operator as follows:
To get the customers who have a sales representative, you use the
IS NOT NULL
operator:MySQL IS NULL’s specialized features
To be compatible with ODBC programs, MySQL supports some specialized features of the
IS NULL
operator.
1) If the
DATE
or DATETIME
column that has NOT NULL
constraint and contains the special date '0000-00-00'
, you can use the IS NULL
operator to find such rows.
In this example, we created a new table named
projects
and insert some data into the table. The last query used IS NULL
to get the rows whose values in the complete_date
value is '0000-00-00'
.
2) If the variable
@@sql_auto_is_null
is set to 1, you can get the value of a generated column after executing an INSERT statement by using the IS NULL
operator. Note that by default the variable @@sql_auto_is_null
is 0. See the following example.
First, set the variable
@@sql_auto_is_null
to 1.
Second, insert a new row into the
projects
table:
Third, use the
IS NULL
operator to get the generated value of the id
column:MySQL IS NULL Optimization
MySQL performs the same optimization for the
IS NULL
operator in the same way that it does for the equal (=) operator.
For example, MySQL uses the index when it searches for
NULL
with the IS NULL
operator as shown in the following query:
See the
EXPLAIN
of the query:
MySQL can also optimize for the combination
col = value OR col IS NULL
. See the following example:
In this example, the
EXPLAIN
shows ref_or_null
when the optimization is applied.
If you have a key that is a combination of columns, MySQL can perform optimization for any key part. Suppose there is an index on columns
k1
and k2
of the table t1
, the following query is optimized:
In this tutorial, you have learned how to use MySQL IS NULL operator to test whether a value is
NULL
or not.
0 comments:
Post a Comment