mysql> CREATE TABLE testtab ( -> label VARCHAR(30) PRIMARY KEY, -> a VARCHAR(10), -> b VARCHAR(10) -> ); Query OK, 0 rows affected (0.09 sec) mysql> INSERT INTO testtab VALUES('both null',NULL,NULL); Query OK, 1 row affected (0.03 sec) mysql> INSERT INTO testtab VALUES('a null',NULL,'b not null'); Query OK, 1 row affected (0.04 sec) mysql> INSERT INTO testtab VALUES('b empty string','a',''); Query OK, 1 row affected (0.03 sec) mysql> INSERT INTO testtab VALUES('a null, b empty string',NULL,''); Query OK, 1 row affected (0.04 sec) mysql> INSERT INTO testtab VALUES('equal non-empty strings','x','x'); Query OK, 1 row affected (0.03 sec) mysql> INSERT INTO testtab VALUES('non-equal non-empty strings','x','y'); Query OK, 1 row affected (0.04 sec) mysql> SELECT * FROM testtab; +-----------------------------+------+------------+ | label | a | b | +-----------------------------+------+------------+ | a null | NULL | b not null | | a null, b empty string | NULL | | | b empty string | a | | | both null | NULL | NULL | | equal non-empty strings | x | x | | non-equal non-empty strings | x | y | +-----------------------------+------+------------+ 6 rows in set (0.04 sec) mysql> SELECT * FROM testtab WHERE a=b; +-------------------------+------+------+ | label | a | b | +-------------------------+------+------+ | equal non-empty strings | x | x | +-------------------------+------+------+ 1 row in set (0.04 sec) mysql> SELECT * FROM testtab WHERE a<>b; +-----------------------------+------+------+ | label | a | b | +-----------------------------+------+------+ | b empty string | a | | | non-equal non-empty strings | x | y | +-----------------------------+------+------+ 2 rows in set (0.03 sec) mysql> SELECT * FROM testtab WHERE b IS NULL; +-----------+------+------+ | label | a | b | +-----------+------+------+ | both null | NULL | NULL | +-----------+------+------+ 1 row in set (0.12 sec) mysql> SELECT * FROM testtab WHERE b IS NOT NULL; +-----------------------------+------+------------+ | label | a | b | +-----------------------------+------+------------+ | a null | NULL | b not null | | a null, b empty string | NULL | | | b empty string | a | | | equal non-empty strings | x | x | | non-equal non-empty strings | x | y | +-----------------------------+------+------------+ 5 rows in set (0.00 sec)