Comparing NULL values in MySQL

Published on - Updated on

In another post I explained that I learned how MySQL deals with trailing spaces in String comparisons and that in some cases spaces are just ignored. Today, I want to cover another element of MySQL queries that might cause some problems for people new to this database: How MySQL treats NULL values.

The logic MySQL applies for NULL values seems a bit odd when you first encounter it, but it does make sense, when you take into account that from a MySQL point-of-view NULL means unknown. It is impossible to compare something unknown with something else, so these kinds of comparisons always return NULL, which resolves to false in MySQL.

This does not apply only to the operators mentioned above, but to all arithmetic comparison operators. For the reasons mentioned above, it is important to always check for NULL values explicitly if NULL is important using the IS NULL and IS NOT NULL conditions.

Condition Result
'a' NOT LIKE NULL false
NULL = '' false
NULL <> '' false

References