=、!=,is和<=>的区别

文章讲述了作者在解决LeetCode上的SQL题目时,关于如何正确处理null值和不等于运算符的陷阱,强调了SQL中`!=`、`<>`、`is`和`isnot`的区别,以及在实际查询中的正确用法。
摘要由CSDN通过智能技术生成

今天在写Leecode面试题时,遇到一道有意思题!

题目:

表: Customer

+-------------+---------+
| Column Name | Type    |
+-------------+---------+
| id          | int     |
| name        | varchar |
| referee_id  | int     |
+-------------+---------+
在 SQL 中,id 是该表的主键列。
该表的每一行表示一个客户的 id、姓名以及推荐他们的客户的 id。

找出那些 没有被 id = 2 的客户 推荐 的客户的姓名。

以 任意顺序 返回结果表。

结果格式如下所示。

示例 1:

输入: 
Customer 表:
+----+------+------------+
| id | name | referee_id |
+----+------+------------+
| 1  | Will | null       |
| 2  | Jane | null       |
| 3  | Alex | 2          |
| 4  | Bill | null       |
| 5  | Zack | 1          |
| 6  | Mark | 2          |
+----+------+------------+
输出:
+------+
| name |
+------+
| Will |
| Jane |
| Bill |
| Zack |
+------+

这是一道很简单的小题,不过我却踩坑了!!!

原因很简单,在我的影响里"="是包括了null的,所以我的判断条件只是"!=2"

这是我的语句: select name from Customer where referee_id != 2;

很显然答案是错误的!!!

在SQL语法中:

1.= 或 != 只能判断基本数据类型

2.is 关键字只能判断是否为null

3.<=> 既能判断null 又能判断 基本数据类型,但是<=>只能代替is,并不能代替is not

另外<>与!=zuo作用相等,<=>与=作用相等,但是"<>""<=>"只适用于mysql,而"=""!="可以适用于其他数据库。

所以正确的写法应该是:

select name from Customer where referee_id <=> 2 or referee_id is null;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值