之间有什么区别
where x is null
和
where x = null
为何后者不起作用?
在SQL中,之间的比较null值,任何其他值(包括另一种null使用比较操作符(如)=,!=,<,等)将导致null,这被认为是false一个where子句的目的(严格来说,它的“不true”,而不是“false”,但效果相同)。
null
=
!=
<
false
原因是a的null意思是“未知”,因此与a进行任何比较的结果null也都是“未知”。因此,通过编码您不会对行造成任何影响wheremy_column = null。
wheremy_column = null
SQL提供了一种特殊的语法来测试列是否为null,viais null和is notnull,这是测试null(或不是null)的特殊条件。
is null
is notnull
这是一些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上运行