MySQL运算符 != 和 <> 以及 = 和 <=> 的区别

举报
_陈哈哈 发表于 2022/01/21 23:46:46 2022/01/21
【摘要】 小伙伴想精准查找自己想看的MySQL文章?喏 → MySQL江湖路 | 专栏目录 1、运算符:!= 和 <> 在MySQL中!= 和 <> 的功能一致,在sql92规范中建议是...

小伙伴想精准查找自己想看的MySQL文章?喏 → MySQL江湖路 | 专栏目录

1、运算符:!= 和 <>

  • 在MySQL中!=<> 的功能一致,在sql92规范中建议是:!=,新的规范中建议为: <>

下面查询username为"陈哈哈"以外的用户,以下两条语句的作用一样。

SELECT * FROM t_user WHERE username != "陈哈哈";
SELECT * FROM t_user WHERE username <> "陈哈哈";

  
 
  • 1
  • 2

1、运算符:= 和 <=>

值得一提的是 =<=> 以及 is 这三个运算符的用法

大家都知道 is 专门用来判断是否为 NULL,而 = 则是用来判断非NULL以外的所有数据类型使用。而 <=> 则是前两者合起来。

先提供测试表数据如下:

mysql> SELECT * from t_user;
+----+-----------+----------+
| id | username  | password |
+----+-----------+----------+
|  1 | 陈哈哈    | abcd1234 |
|  2 | 侨布斯    | 1234     |
|  3 | 提莫      | 1234abcd |
|  4 | aaa       | NULL     |
|  5 | NULL      | aaaa     |
+----+-----------+----------+
5 rows in set (0.00 sec)

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

下面两个SQL的查询结果一致,均查出了username 为 NULL的数据

mysql> SELECT * from t_user where `username` is null;
+----+----------+----------+
| id | username | password |
+----+----------+----------+
|  5 | NULL     | aaaa     |
+----+----------+----------+
1 row in set (0.00 sec)

mysql> SELECT * from t_user where `username` <=> null;
+----+----------+----------+
| id | username | password |
+----+----------+----------+
|  5 | NULL     | aaaa     |
+----+----------+----------+
1 row in set (0.00 sec)

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

下面两个SQL的查询结果一致,均查出了username 为 ‘陈哈哈’ 的数据

mysql> SELECT * from t_user where `username` = '陈哈哈';
+----+-----------+----------+
| id | username  | password |
+----+-----------+----------+
|  1 | 陈哈哈    | abcd1234 |
+----+-----------+----------+
1 row in set (0.00 sec)

mysql> SELECT * from t_user where `username` <=> '陈哈哈';
+----+-----------+----------+
| id | username  | password |
+----+-----------+----------+
|  1 | 陈哈哈    | abcd1234 |
+----+-----------+----------+
1 row in set (0.00 sec)

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

可见,<=>运算符相当于封装了=is ,既可以判断 非NULL值,也可以用来判断NULL值。

  • <=> 只用于MySQL数据库,username <=> NULL 得 0 等价 username is NULL,NOT(username <=> NULL) 等价 username is NOT NULL;
  • 当col1,col2两个可能存在NULL值的列需要进行相等比较时,可以使用 col1 <=> col2,可以把null=null的也关联起来。

文章来源: chensj.blog.csdn.net,作者:_陈哈哈,版权归原作者所有,如需转载,请联系作者。

原文链接:chensj.blog.csdn.net/article/details/115331735

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。