SQL Server 查询 出现怪问题
--SQL1 
 SELECT   *   FROM   ActivityDetails   WHERE   ActivityDetailsNumber   like    '105679 ' 
 --SQL2 
 SELECT   *      FROM   QuestionList   WHERE   ActivityDetailsNumber   like    '105679 ' 
 --SQL3 
 SELECT   ActivityDetailsNumber   FROM   ActivityDetails 
 WHERE   ActivityDetailsNumber   not   in    
                   (SELECT   ActivityDetailsNumber      FROM   QuestionList)   
 ActivityDetailsNumber      是表ActivityDetails   的主键,ActivityDetailsNumber是表的外键,想找出ActivityDetailsNumber   在ActivityDetails   存在   但不在QuestionList   里面的值,   在同一个数据库中查询,查出SQL1有一条记录,SQL2没有记录,但是SQL3   却没有记录,请大家帮我看看为什么SQL3查不出数据,谢谢。
------解决方案--------------------in 相当于等号,null 不是0不是空 不能与其它值比较,如果你不加那句话的话,也可用在执行前加上set ansi_nulls off 记得结束后 用set ansi_nulls on 恢复,免得影响其它
------解决方案--------------------刚看到,下午回来看看
------解决方案--------------------wgzaaa() 說得很有道理...我也認為是這個原因... 
 NULL 值相當於未知, 已知與未知作比較, 結果是未知,  
 於是 WHERE 條件 就未知, 所以傳回空結果集合. 
 所以可以加上 SET ANSI_NULLS OFF,  
 或者  
 給 WHERE 叢句加上 ActivityDetailsNumber IS NOT NULL  
 或者 
 使用 ISNULL() 改寫成 
 SELECT ActivityDetailsNumber  
 FROM ActivityDetails 
 WHERE ActivityDetailsNumber  not in  
 ( 
     SELECT ISNULL(ActivityDetailsNumber,  ' ') AS  ActivityDetailsNumber  
     FROM QuestionList  
 )