MySQL NULL 使用带来的坑
MySQL 基础篇
NULL 无值(no value),它与字段包含 0 、空字符串或仅仅包含空格不同。
数据库字段允许空值,会遇到一些问题,这里整理一些 MySQL 设置列允许为 NULL 带来的坑。
数据准备:
CREATE TABLE `teacher` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(32) DEFAULT NULL,
`age` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4; insert into `teacher` (`id`, `name`, `age`) values('','seven','');
insert into `teacher` (`id`, `name`, `age`) values('', NULL,'');
insert into `teacher` (`id`, `name`, `age`) values('','zhangsan', NULL);
问题一:负向查询,不能获取 NULL 值的行
比如查询 age!=18 的数据,id=3 的数据获取不到。
SELECT * FROM teacher WHERE age!=18;
NULL 与不匹配在通过过滤选择出不具有特定值的行时,你可能希望返回具有 NULL 值的行。但是,不行。因为未知具有特殊的含义,数据库不知道它们是否匹配,所以在匹配过滤或不匹配过滤时不返回它们。
问题二:通配符不能匹配到列为 NULL 的数据
比如我们执行如下语句:
SELECT * FROM teacher WHERE name LIKE '%';
注意 NULL 虽然似乎 % 通配符可以匹配任何东西,但有一个例外,即 NULL。即使是 WHERE name LIKE '%' 也不能匹配用值 NULL 作为姓名的行。
问题三:分组时,NULL 将作为单独一个分组返回
如果分组列中具有 NULL 值,则 NULL 将作为一个分组返回。如果列中有多行 NULL 值,它们将分为一组。
问题四:聚集函数会忽略列值为 NULL 的行
比如我们执行如下语句:
数据库中有三条数据,上面的 SQL 值显示2条数据。
MySQL NULL 使用带来的坑的更多相关文章
- MySQL AND 和 OR 联合使用带来的坑
MySQL 基础篇 三范式 MySQL 军规 MySQL 配置 MySQL 用户管理和权限设置 MySQL 常用函数介绍 MySQL 字段类型介绍 MySQL 多列排序 MySQL 行转列 列转行 M ...
- iOS7之后经过滑动返回导航栏隐藏和显示带来的坑(转载)
iOS7之后经过滑动返回导航栏隐藏和显示带来的坑 Apple 自从iOS7之后增加了屏幕边缘右滑返回交互的支持,再配合UINavigationController的交换动画,pop上一级的操作变的非常 ...
- MySQL NULL 值处理
MySQL NULL 值处理 我们已经知道MySQL使用 SQL SELECT 命令及 WHERE 子句来读取数据表中的数据,但是当提供的查询条件字段为 NULL 时,该命令可能就无法正常工作. 为了 ...
- Oracle 与 Mysql NULL值,空字符串''的区别
Oracle(null等同于空字符'') 1.oracle插入空字符串默认替换成null 2.oracle查询(null和被替换的空字符)时使用 is null/is not null 3.使用聚合函 ...
- windows server服务器上mysql远程连接失败的坑
windows server服务器上mysql远程连接失败的坑 背景:趁这阿里云活动,和朋友合伙买了个服务器,最坑的是没想到他买的是windows Server的,反正便宜,将就着用吧,自己装好了wa ...
- 二十一、MySQL NULL 值处理
MySQL NULL 值处理 我们已经知道 MySQL 使用 SQL SELECT 命令及 WHERE 子句来读取数据表中的数据,但是当提供的查询条件字段为 NULL 时,该命令可能就无法正常工作. ...
- DB-MySQL:MySQL NULL 值处理
ylbtech-DB-MySQL:MySQL NULL 值处理 1.返回顶部 1. MySQL NULL 值处理 我们已经知道 MySQL 使用 SQL SELECT 命令及 WHERE 子句来读取数 ...
- net.sf.json.JSONObject处理 "null" 字符串的一些坑
转: net.sf.json.JSONObject处理 "null" 字符串的一些坑 2018年05月02日 16:41:25 大白能 阅读数:7026 版权声明:本文为博主原 ...
- mysql NULL函数 语法
mysql NULL函数 语法 作用:如果表中的某个列是可选的,那么我们可以在不向该列添加值的情况下插入新记录或更新已有的记录.这意味着该字段将以 NULL 值保存. 说明:NULL 值的处理方式与其 ...
随机推荐
- Solr 集成ikanalyzer
Solr 不能对中文进行分词,ikanalyzer可以. ikanalyzer下载链接 1.下载 jar形式 2.放到D:\soft\solr-8.1.0\server\solr-webapp\web ...
- ISO/IEC 9899:2011 条款6.4.8——预处理数字
6.4.8 预处理数字 语法 1.pp-number: digit . digit pp-number digit pp-number identifier-nondigit pp- ...
- Civil 3D百度云地址
Civil 3D 2018百度云地址 https://pan.baidu.com/s/1edeVhG Civil 3D 2019注册机百度云地址 链接: https://pan.baidu.com/s ...
- ABAP编辑器输入中文变成问号
在ABAP编辑器里输入汉字,点击空格后显示问号? 中英文环境下编辑都出现乱码 实用程序->设置 ->基于文本的编辑器 如果用老式编辑器,可以输入中文 试试打个补丁 GUI740 补丁17 ...
- (十)java虚拟机性能监控工具
一. jps(Java Virtual Machine Process Status Tool) jps主要用来输出JVM中运行的进程状态信息.语法格式如下: 命令行参数选项说明如下: 1.1 案例 ...
- MySQL中创建存储过程示例
在这个示例中需要用到一张名为test_table的表,我们使用show create table test_table查看表的创建过程: CREATE TABLE `test_table` ( `id ...
- Ehcache开启JMX支持
Ehcache提供了基于JMX的监控支持,支持对以下几类信息的监控. CacheManager Cache CacheConfiguration CacheStatistics 按照JMX的规范,为了 ...
- jenkins的slave/agent如何通过tcp端口和master建立连接
Jenkins是master-slave/agent结构,可以通过代理把任务下发到各个agent/slave上去执行 如图,首先在master上开启代理配置,指定master上开启的tcp端口,以及和 ...
- 图形学入门(1)——直线生成算法(DDA和Bresenham)
开一个新坑,记录从零开始学习图形学的过程,现在还是个正在学习的萌新,写的不好请见谅. 首先从最基础的直线生成算法开始,当我们要在屏幕上画一条直线时,由于屏幕由一个个像素组成,所以实际上计算机显示的直线 ...
- CSS History
Preface 如果只是要写程序,那的确是不需要这么麻烦,上来直接看Syntax,动手写上至少300行代码,做上3个应用程序,这门语言你也就差不多会用了,接下来不过就是模式,特殊的地方以及记住一些函数 ...