小编典典

SQL为null和= null

sql

之间有什么区别

where x is null

where x = null

为何后者不起作用?


阅读 158

收藏
2021-05-05

共1个答案

小编典典

在SQL中,之间的比较null值,任何其他值(包括另一种null使用比较操作符(如)=!=<,等)将导致null,这被认为是false一个where子句的目的(严格来说,它的“不true”,而不是“false”,但效果相同)。

原因是a的null意思是“未知”,因此与a进行任何比较的结果null也都是“未知”。因此,通过编码您不会对行造成任何影响wheremy_column = null

SQL提供了一种特殊的语法来测试列是否为null,viais nullis notnull,这是测试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);

仅返回1行(按预期方式):

TEST    X   Y
x = y   1   1

看到这个在SQLFiddle上运行

2021-05-05