Not in 条件不考虑 Oracle 中的 null

Not in condition does not consider null in Oracle

我的结果集如下

reg_no    name    grade
--------- ------- ------
1112      Muthu   A
1113      Vikki   B
1114      Murali  C
1115      Shankar null

我已经检查了条件不在

select * from grades where grade not in ('B','C')

但是在执行查询时,我只有一条 A 级记录。我没有得到第四行。我坚持这个。如何检查这个。

检查 null 是否存在的唯一正确方法是 IS NULLIS NOT NULL

select * from grades where grade not in ('B','C') or grade is null

这样检查

select * from grades where nvl(grade,'?') not in ('B','C');

但是如果存在的话,这个适当的不能在成绩上使用索引。