Mysql: выбрать * из таблицы, где col IN (null, "") возможен без ИЛИ - PullRequest
23 голосов
/ 27 января 2010

это как-то возможно сделать выбор для пустых строк и значений NULL в Mysql без использования или?

this:

   select * from table where col IN (null, "");

не работает, игнорирует ноль (или, возможно,сопоставляет его со строкой 'null'

спасибо, PV Goddijn

1 Ответ

34 голосов
/ 27 января 2010
SELECT  *
FROM    mytable
WHERE   COALESCE(col, '') = ''

Обратите внимание, однако, что запрос OR будет гораздо более эффективным, если столбец будет проиндексирован:

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

При этом будет использоваться ref_or_null путь доступа к индексу.

Если вам нужно выбрать из списка значений вместе с NULLs, просто поместите все ненулевые значения в список и добавьте одно OR IS NULL условие:

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

Также будет использоваться индекс для col.

...