Небольшое уточнение по поводу NULL-значений конкретных типов:
1. Date - хоть в документации и написано, что для date NULL = 01.01.1901, реально на сервере храниться 01.01.1900 (MSSQLServer 2000). Более того, datenull() возвращает именно это значение.
2. Enum - не первое значение, а 0 (в Enum не обязательно содержится элемент со значением 0, а реально в базе это тот же int).
И к вопросу о "where Fiedl = null":
Почему бы не использовать конструкцию типа :
SomeTable tbl;
...
select from tbl where (! SomeField);
PS: И, наверное, использование неинициализированных переменных в коде не есть хорошо
))