SQL 中 = null 与 is null 的区别?

问题

sql 判断是否为空,= null 与 is null 有什么具体区别?

例子

例如以下SQL:

结果:

第一行不会返回任何数据,第二个会返回字段为空的数据。

原因

在SQL中,null值与另外一个值进行逻辑比较(=,!=,<>),返回的结果也是null,在where中,null值是按照false处理的,null值为未知,所以比较结果也是未知。

结论

在SQL中,判断是否等于null 或 不等于null,应使用 A is null 或 A is not null。

拓展

mysql 中null值和空值的区别,null值代表的是未知,占用空间,表存储索引时不保存null值,索引null不走索引,空值不占用空间。

mysql 官方解释

“NULL columns require additional space in the row to record whether their values are NULL. For MyISAM tables, each NULL column takes one bit extra, rounded up to the nearest byte.”

打个比方来说,你有一个杯子,空值代表杯子是真空的,NULL代表杯子中装满了空气,虽然杯子看起来都是空的,但是区别是很大的。

参考资料

jackyrong

点赞

发表评论

电子邮件地址不会被公开。 必填项已用*标注