如果set ansi_nulls为off ,那么in操作会选取null列
下面两个结果集一样:set ansi_nulls on
select a.* from aa as a,bb as b where a.name=b.name
select * from aa where name in (select name from bb)

解决方案 »

  1.   

    当 SET ANSI_NULLS 为 OFF 时,等于 (=) 和不等于 (<>) 比较运算符不遵从 SQL-92 标准。使用 WHERE column_name = NULL 的 SELECT 语句返回 column_name 中含有空值的行。使用 WHERE column_name <> NULL 的 SELECT 语句返回列中含有非空值的行。此外,使用 WHERE column_name <> XYZ_value 的 SELECT 语句返回所有非 XYZ 值和非 NULL的行