原因是 null的意思是“未知的”,所以任何与 null的比较结果也是“未知的”。因此,通过编码 where my_column = null,您将不会得到对行的命中。
SQL 通过 is null和 is not null提供了测试列是否为 null的特殊语法,这是测试 null(或非 null)的特殊条件。
下面是一些 SQL,它们显示了各种条件及其效果,如上所示。
create table t (x int, y int);
insert into t values (null, null), (null, 1), (1, 1);
select 'x = null' as test , x, y from t where x = null
union all
select 'x != null', x, y from t where x != null
union all
select 'not (x = null)', x, y from t where not (x = null)
union all
select 'x = y', x, y from t where x = y
union all
select 'not (x = y)', x, y from t where not (x = y);