Наступает вечерочек, город засыпает, просыпается Алёна. Отрефакторила один репорт, заревьюила второй и погрузилась мыслями в свою римскую империю.
Речь о
NULL.Не о нуле. Ноль это хотя бы величина, а вот NULL это отсутствие самого факта наличия значения. Просто вдумайтесь: это не пустая строка ('') и не ноль (0).
Существует штука, означающая, что значение неизвестно, не определено или неприменимо - это же что-то на магическом.
NULL ломает всё. Любая операция с NULL порождает NULL.
NULL + 100500 = NULL. Что бы не происходило, мы всегда получаем абсолютное ничто.
Но есть факт, который меня очень сильно забавляет.
NULL не равен самому себе.Ещё раз, просто вдумайтесь. Если вы пропишете условие WHERE entity_1 = entity_2, и в обеих ячейках будет этот призрак, результат будет не TRUE, а тоже NULL, FALSE.
Ложь о том, что ничто равняется другому ничему. Это же великолепная философская мысль, разве нет?
Два ничто, две идентичные пустоты, но при этом они не тождественны.
А это значит, что каждое отсутствие индивидуально.
Конечно, с точки зрения логики машины, все NULL-ы идентичны, но их семантика, причина их появления может быть оооочень разной.
Один NULL в поле "дата увольнения"это действующий сотрудник у которого атрибут увольнения просто не может существовать, другой это ошибка ввода данных.
И я вот думаю, что этот смысл, стоящий за NULL, и делает каждое ничто контекстно уникальным. И даже начинаю видеть в этом сакральный смысл.
Что имею сказать: Именно поэтому наша работа - не слепо верить данным, а расследовать историю каждого NULL. И спрашивать зачем он здесь оказался. Иначе мы рискуем принять действующего сотрудника за ошибку ввода, а настоящую ошибку за норму.
А теперь вопрос: я окончательно поехала головой и слишком много ковырялась в запросах, или это действительно занимательно??