案例说明SQL语言中 is null 和 =null 的区别


案例说明SQL语言中 is null 和 =null 的区别

之前在某网站中遇到了一道题:某商城包含两个表,Customers 表和 Orders 表。编写一个 SQL 查询,找出所有从不订购任何东西的客户。
Customers:

id name
1 J
2 H
3 S
4 M

Orders:

id CustomerId
1 3
2 1

题目很简单只需要两张表进行左连接,然后找出为null的字段就行,但其中却包含陷阱;

select name as Customers
from Customers c left join Orders o
on c.id = o.CustomerId
where o.CustomerId is null;

仔细想想为什么where条件是is null;而不是 = null?
如果用=null查询的结果是空值;
我们首先仔细想想左连接有什么样的特点?当两张表进行左连接的时候,左边的表会全部保留,而右边的表会根据关联字段进行保留,如果关联字段不相等的,右边会默认为null;例如上面案例:

左右连接产生的是字符串的'NULL'而不是没有值而产生的NULL;
所以当我们用is null的时候可以查出数据,而用=null却查不出数据;
总结:
IS NULL 是判断某个字符是否为空,并不代表空字符或者是0;
=NULL 是判断某个值是否等于NULL,可能是没有值;


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM