Не стоит недооценивать сложность, которую вы создаете, создавая поле NULLable. Например, следующее, где предложение выглядит так, как оно будет соответствовать всем строкам (бит может быть только 1 или 0, правильно?)
where bitfield in (1,0)
Но если бит бит имеет значение NULLable, он пропустит некоторые. Или возьмите следующий запрос:
select * from mytable
where id not in (select id from excludetable)
Теперь, если excludetable содержит нуль и a 1, это означает:
select * from mytable
where id <> NULL and id <> 1
Но «id & lt;> NULL» является false для любого значения id, поэтому это никогда не вернет строки.
Учитывая, что большинство людей могут быть застигнуты врасплох с помощью NULL, я стараюсь избегать этого, когда смогу.