Предложения NOT IN и значения NULL
Эта проблема возникла, когда я получил различное количество записей для идентичных запросов, один из которых используетnot in
where
ограничение, а другой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 возвращать результат.