网站首页 > 技术文章 正文
运算符:!=、<>、is not
在MySQL中!= 和 <> 的功能一致,在sql92规范中的建议是使用:!=,新的规范中建议使用: <>。但是不管是!=还是<>都无法和 NULL 配合使用来查询数据,这个时候就需要使用is not。
我们来看一个简单的示例。
// <>、!=配合非null的值查找数据
SELECT * FROM user WHERE userName <> "li.zhou"
SELECT * FROM user WHERE userName != "li.zhou"
// is not 配合 null 查出userName不是null的数据
SELECT * FROM user WHERE userName is not null
运算符:=、<=>、is
is 专门用来判断是否为 NULL,而 = 则是用来判断NULL以外的所有数据类型,而 <=> 就是他们2个结合体。所以当传入的参数存在NULL的可能的情况下,一定要使用 <=> 而不是 =。
另外当两个可能存在NULL的列进行比较的时候,比如列A和列B,当A和B均为NULL的时候,A = B 返回的是false,而 A <=> B 的结果则是 true。
最后,<=> 只用于MySQL数据库,其他数据库是不支持的,千万要注意。
最后我们再看来一个示例:
先准备一个表格,如下:
+----+-----------+----------+
| id | userName | password |
+----+-----------+----------+
| 1 | li.zhou | NULL |
| 2 | NULL | abc |
| 3 | NULL | NULL |
先运行3个输入不为NULL的sql命令:
// 能找到数据
SELECT * FROM user WHERE userName = "li.zhou"
// 直接执行异常
SELECT * FROM user WHERE userName is "li.zhou"
// 能找到数据
SELECT * FROM user WHERE userName <=> "li.zhou"
再运行3个输入为NULL的sql命令
// 不能找到数据
SELECT * FROM user WHERE userName = null
// 能找到数据
SELECT * FROM user WHERE userName is null
// 能找到数据
SELECT * FROM user WHERE userName <=> null
最后再运行2个进行比较的sql
// 不能找到数据
SELECT * FROM user WHERE userName = password
// 能找到第三条数据
SELECT * FROM user WHERE userName <=> password
猜你喜欢
- 2025-03-19 Mysql创建用户和权限管理(mysql创建用户和权限管理的区别)
- 2025-03-19 MySQL之慢查询日志分析(mysql产生慢日志的主要原因)
- 2025-03-19 为什么我们禁止了MySQL深分页查询?原理分析与实战优化
- 2025-03-19 《MySQL必知必会》_笔记03(mysql必知必会 百度云)
- 2025-03-19 MySQL数据库性能优化(mysql5.7性能优化)
- 2025-03-19 Mysql 数据库运维方案(mysql运维内参)
- 2025-03-19 Mysql高性能优化笔记(含578页笔记PDF文档),收藏了
- 2025-03-19 MySQL数据库竟能自动同步?打造双保险备份方案,运维半夜笑醒
- 2025-03-19 一条简单的更新语句,MySQL是如何加锁的?
- 2025-03-19 mysql表分区实现-range(mysql分区和分表优缺点)
- 最近发表
- 标签列表
-
- cmd/c (57)
- c++中::是什么意思 (57)
- sqlset (59)
- ps可以打开pdf格式吗 (58)
- phprequire_once (61)
- localstorage.removeitem (74)
- routermode (59)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- log.warn (60)
- cannotinstantiatethetype (62)
- js数组插入 (83)
- resttemplateokhttp (59)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- reader.onload (61)
- outofmemoryerror是什么意思 (64)
- flask文件上传 (63)
- eacces (67)
- 查看mysql是否启动 (70)
- java是值传递还是引用传递 (58)
- 无效的列索引 (74)