Базы данных / SQL trainee
Почему NULL = NULL даёт UNKNOWN, а не TRUE?
Ответ
NULL — это «значение неизвестно». Два неизвестных значения — нельзя сказать, равны они или нет. Поэтому NULL = NULL это не TRUE, а UNKNOWN, в условиях ведёт себя как FALSE. Для проверки используется IS NULL.
Разбор: NULL означает «значение неизвестно», поэтому сравнить два неизвестных нельзя — результат UNKNOWN (в WHERE трактуется как не-TRUE), а проверять надо через IS NULL. Ловушка: дело не в типах, не в уникальных внутренних идентификаторах и не в приведении NULL к FALSE — сам семантический смысл «неизвестного» делает любое сравнение через = неопределённым.
Хочешь так же по своей компании — с вопросами по грейдам и задачами? Закажи гайд или забери свежее в Telegram.