MySQL: select * from table where col IN (null, "") possible without OR

mysql, null

Solution

SELECT  *
FROM    mytable
WHERE   COALESCE(col, '') = ''

Note, however, than `OR` query will be much more efficient if the column is indexed:

SELECT  *
FROM    mytable
WHERE   col = '' OR col IS NULL

This will use `ref_or_null` access path on the index.

If you need to select from a list of values along with `NULLs`, just put all not-null values into the list and add a single `OR IS NULL` condition:

SELECT  *
FROM    mytable
WHERE   col IN ('val1', 'val2', 'val3') OR col IS NULL

This will use an index on `col` as well.

Problem

Is it somehow possible to do a select for empty strings and NULL values in MySQL without using or? This: ``` select * from table where col IN (null, ""); ``` doesn't work, it ignores the null (or possibly matches it with the string 'null').

Original source