为了账号安全,请及时绑定邮箱和手机立即绑定

SQL为空和=空

SQL为空和=空

翻阅古今 2019-06-25 15:04:47
SQL为空和=空.之间的区别是什么?where x is null和where x = null为什么后者不起作用?
查看完整描述

3 回答

?
泛舟湖上清波郎朗

TA贡献1818条经验 获得超3个赞

在SQL中,对null值和任何其他值(包括其他值)null)使用比较运算符(例如=, !=, <,等)会导致null,被认为是false为了WHERE子句的目的(严格地说,它是“不正确”,而不是“假”,但效果是一样的)。


理由是null意思是“未知”,所以与null也是“未知”。因此,您将不会通过编码在行上命中。where my_column = null.


SQL提供了用于测试列是否为null.class=‘class 2’>is null和is not 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);

只返回一行(如预期的):


TEST    X   Y

x = y   1   1

看到这个在运行SQLFiddle


查看完整回答
反对 回复 2019-06-25
?
慕虎7371278

TA贡献1802条经验 获得超4个赞

值得注意的是,NULL不等于NULL.

NULL不是一个值,因此不能与另一个值进行比较。

where x is null检查x是否为空值。

where x = null是检查x是否等于NULL,这永远不会是真。


查看完整回答
反对 回复 2019-06-25
?
慕码人2483693

TA贡献1860条经验 获得超9个赞

首先是检查字段值是否为null但是以后就不会像你期望的那样工作了,因为null是不等于任何东西的特殊值,因此不能使用=为了它。

因此,当您需要检查字段值是否为null或不使用:

where x is null

而不是:

where x = null


查看完整回答
反对 回复 2019-06-25
  • 3 回答
  • 0 关注
  • 1066 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信