SQL技术问询:WHERE子句C2<>4时返回记录数及NULL值是否被统计?
问题分析与解答
首先先明确表T1的原始数据:
C1 C2 1 NULL 11 NULL 111 3 12 4 122 4 12 5
接下来看目标查询语句:select * from T1 where C2<> 4
核心知识点:SQL中NULL的比较规则
在SQL里,NULL代表“未知值”,它和任何值(包括另一个NULL)进行比较时,结果既不是TRUE也不是FALSE,而是UNKNOWN。而WHERE子句只会筛选出条件结果为TRUE的记录,UNKNOWN的记录会直接被排除。
逐条分析每条记录是否符合条件
- 第一条:C2=NULL → 和4比较结果为UNKNOWN → 不被选中
- 第二条:C2=NULL → 同上 → 不被选中
- 第三条:C2=3 → 3≠4,结果为TRUE → 被选中
- 第四条:C2=4 → 4≠4,结果为FALSE → 不被选中
- 第五条:C2=4 → 同上 → 不被选中
- 第六条:C2=5 →5≠4,结果为TRUE → 被选中
最终结论
这条查询语句会返回2条记录,所有C2为NULL的记录都不会被计入统计。
内容的提问来源于stack exchange,提问作者Anupriya Jaiswal
相关产品推荐
相关产品推荐

