Подтвердить что ты не робот

Mysql: выберите * из таблицы, где col IN (null, "") возможно без OR

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

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

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

спасибо, П.В. Goddijn

4b9b3361

Ответ 1

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.