SQL查询5-8月及Date1为NULL记录不返回NULL行问题求解
核心问题
- SQL中不存在
= NULL的合法判断逻辑:NULL表示未知值,任何运算符(包括=、!=、<、>等)和NULL比较的结果都是未知,WHERE条件只会返回判定为真的行,因此month(Date1)=null永远不会匹配到任何记录。 - 对空值的判断必须使用专用的
IS NULL语法,同时你可以直接判断Date1 IS NULL,不需要套month函数,执行效率更高也更准确。
修正后的查询语句
select Date1, name from t1 where (month(Date1) >=5 and month(Date1) <=8) or Date1 IS NULL;
你也可以把月份判断简化为month(Date1) between 5 and 8,逻辑完全一致。
内容的提问来源于stack exchange,提问作者noob
相关产品推荐
相关产品推荐

