Mysql的NULL和Empty String
本文基于Mysql5.7版本的参考资料:
https://dev.mysql.com/doc/refman/5.7/en/working-with-null.html
https://dev.mysql.com/doc/search/?d=12&p=1&q=null+empty+string
https://dev.mysql.com/doc/refman/5.7/en/static-format.html
https://dev.mysql.com/doc/refman/5.7/en/dynamic-format.html
昨天新建一个表用于存储表结构信息:
create table tablist(TABLE_SCHEMA varchar(40),TABLE_NAME varchar(40),COLUMN_NAME varchar(40),COLUMN_TYPE varchar(40),
IS_NULLABLE varchar(10),COLUMN_DEFAULT varchar(40),COLUMN_COMMENT varchar(1000),REMARK varchar(2000)); insert into tablist(TABLE_SCHEMA,TABLE_NAME,COLUMN_NAME,COLUMN_TYPE,IS_NULLABLE,COLUMN_DEFAULT,COLUMN_COMMENT)
select TABLE_SCHEMA,TABLE_NAME,COLUMN_NAME,COLUMN_TYPE,IS_NULLABLE,COLUMN_DEFAULT,COLUMN_COMMENT
from information_schema.`COLUMNS` where TABLE_SCHEMA='leo';
然后查询tablist表:

看看有哪些列没有comment于是:
select * from tablist where COLUMN_COMMENT is null;
查到的结果居然是Empty set。不过从以上查询结果和navicat都能看出:null值在结果集中显示的是'null'的单词,而空字符串则显示为空。
使用select * from tablist where COLUMN_COMMENT='';查询正常。
在MySQL中NULL值和空字符''是不一样的,这点可能会引起很多新人的困惑,因此查询官网相关的页面总结如下:
- 两者的查询方式不一样:NULL值查询使用is null/is not null查询,而empty string可以使用=或者!=、<、>等算术运算符,这点算是最主要的区别了。
以下列出的几点算不上区别,只是一些NULL和空字符的使用总结:
- 在MySQL当中,0和NULL默认可以作为布尔类型的false,任意其他值可以用于表示True,不过一般用1作为True的默认布尔值。
- 在MySQL当中,NULL值在group by、order by、distinct语句中被认为是相等的,会被分在同一组。
- 对于MySQL的unique index来说,null值是可以存在多个的,也就是说unique index不会过滤null值。
- 在MySQL当中,使用order by对包含NULL值的列排序,NULL值会默认排在前边,order by ... desc时排在最后。
- 同Oracle、MSSQL一样你可以在包含NULL值的列上创建索引,但仅限于MyISAM, InnoDB和MEMORY存储引擎。
- 默认情况下LOAD DATA会把空字符或缺失字段全部设置为空字符。如果想要插入NULL值请使用\N,在某些特殊情况下也可以使用NULL字符,但需要设置正确的LOAD DATA语法项,参考https://dev.mysql.com/doc/refman/5.7/en/load-data.html。
- 在使用COUNT(), MIN(), and SUM()等函数时,NULL值会被忽略,当然count(*)除外。
- 对于TIMESTAMP列,插入的NULL值会被CURRENT_TIMESTAMP替代。
- 对于myisam引擎,null值占用额外的存储空间(1bit),空字符串则完全不占用空间。
- 对于索引查询的影响,无论是NULL还是空字符目前的测试结果表明都没有太大区别,这点与oracle中is null的查询可能会导致全表扫描不一样。
- 以上提到的关于NULL值的分组、聚合等,基本都适用于空字符。
Mysql的NULL和Empty String的更多相关文章
- Mysql 数据库默认值选 ''" 、Null和Empty String的区别
两者的查询方式不一样:NULL值查询使用is null/is not null查询,而empty string可以使用=或者!=.<.>等算术运算符,这点算是最主要的区别了. 对于myis ...
- Summary: Difference between null and empty String
String s1 = ""; means that the empty String is assigned to s1. In this case, s1.length() i ...
- 'EF.Utility.CS.ttinclude' returned a null or empty string.
需要安装https://www.microsoft.com/en-us/download/details.aspx?id=40762
- mysql default null empty string concat varchar text
text不可设置默认值 null empty string 前者update 初始值时 我响应,但不报错
- [shiro] Wildcard string cannot be null or empty. Make sure permission strings are properly formatted.
访问某页面时,出现了这个异常: java.lang.IllegalArgumentException: Wildcard string cannot be null or empty. Make su ...
- Check if a string is NULL or EMPTY using PowerShell
http://techibee.com/powershell/check-if-a-string-is-null-or-empty-using-powershell/1889 Check if a s ...
- (后端)shiro:Wildcard string cannot be null or empty. Make sure permission strings are properly formatted.
访问某页面时,出现了这个异常: java.lang.IllegalArgumentException: Wildcard string cannot be null or empty. Make su ...
- (转)Java 中关于String的空对象(null) ,空值(empty),空格
原文出处:Java 中关于String的空对象(null) ,空值(empty),空格 定义 空对象: String s = null; 空对象是指定义一个对象s,但是没有给该对象分配空间,即没有实例 ...
- Net Core 下 Newtonsoft.Json 转换字符串 null 替换成string.Empty
原文:Net Core 下 Newtonsoft.Json 转换字符串 null 替换成string.Empty public class NullToEmptyStringResolver : De ...
随机推荐
- Java 容器源码分析之 Map
ava.util 中的集合类包含 Java 中某些最常用的类.最常用的集合类是 List 和 Map.List 的具体实现包括 ArrayList 和 Vector,它们是可变大小的列表,比较适合构建 ...
- Mybatis(六) Spring整合mybatis
心莫浮躁~踏踏实实走,一步一个脚印,就算不学习,玩,能干嘛呢?人生就是那样,要找点有意思,打发时间的事情来做,而钻研技术,动脑动手的过程,还是比其他工作更有意思些~ so,努力啥的都是强迫自己做自以为 ...
- python面向对象入门(1):从代码复用开始
本文从代码复用的角度一步一步演示如何从python普通代码进化到面向对象,并通过代码去解释一些面向对象的理论.所以,本文前面的内容都是非面向对象的语法实现方式,只有在最结尾才给出了面向对象的简单语法介 ...
- Linux某些命令找不到/无法使用
1.zip/unzip: command not found yum list | grep zip/unzip yum install zip yum install unzip 2.rz -y/s ...
- Hive环境搭建及测试
前提条件:已经安装好如下软件 Eclipse4.5 hadoop-2.7.3 jdk1.7.0_79 此篇文章基于上一篇文章:zookeeper高可用集群搭建 什么是Hive? 1.Hive是一个基 ...
- [转]【Angular4】基础(六):HTTP模块
本文转自:https://blog.csdn.net/u013451157/article/details/79519719 版权声明:本文为博主原创文章,未经博主允许不得转载. https://bl ...
- SQL Server 本地数据库登录不上 解决方法
sql本地数据库登录不了的话.先看看自己计算机 服务 SQL server (MSSQLSERVER) 没有打开的话,请打开. 今天说的情景模式是 你误删了windows登录:禁用了sa登录:s ...
- Redis中的执行命令的过程
在redis.c的initServerConfig()方法中,通过调用dictCreate方法初始化server端的命令表.这个命令表是一个hashtable,可以通过key找到相关的命令: /* C ...
- iframe实用操作
iframe高度设置为子页面高度 //需要使用Jquery $(document).ready(function () { parent.document.getEleme ...
- devtools进行热部署
热部署的形式这里只介绍一种devtools devtools可以实现页面热部署(即页面修改后会立即生效,这个可以直接在application.properties文件中配置spring.thymele ...