SQL与null的比较与运算
在SQL中,任何与NULL值的比较结果都不是TRUE或FALSE,而是UNKNOWN。这意味着当你使用不等于(<>)或其他比较运算符时,如果其中涉及到了NULL值,那么这些比较都不会返回TRUE。
同理 ,与NULL值进行运算,如+,-,*,返回的结果都是NULL
select * from a join b on a.id=b.parentid where b.nameNum<>999
-
这条SQL中where id<>999的条件是在a表和b表join后进行的,如果join后合并表有nameNum为null的,那么这个id将不会被筛出。
想要值为null的ID,可以这样做:
select * from a join b on a.id=b.parentid where isnull(b.nameNum,9999)<>999
或者
select * from a join b on a.id=b.parentid where b.nameNum<>999 or b.nameNum is null
或者(先在B表中过滤后再join)
select * from a join (select * from b where b.nameNum<>999) c on a.id=c.parentid
上一篇: 几秒钟就充满电!科学
下一篇: 暂无数据