Эта проблема возникла, когда у меня были разные учетные записи для того, что, как я думал, было идентичным запросом, использующим ограничение not in
where
, а другое a left join
. Таблица в ограничении not in
имела одно нулевое значение (плохие данные), которое заставило этот запрос вернуть число 0 записей. Я понимаю, почему, но я мог бы использовать некоторую помощь, полностью понимая концепцию.
Чтобы просто указать, почему запрос A возвращает результат, но B не работает?
A: select 'true' where 3 in (1, 2, 3, null)
B: select 'true' where 3 not in (1, 2, null)
Это было в SQL Server 2005. Я также обнаружил, что вызов set ansi_nulls off
заставляет B возвращать результат.