一、 NULL,空值,数字,汉字,字母

根据上边的实操可以清楚看出:

  • 空值(Null)的长度是 Null,不确定占用了多少存储空间,但是占用存储空间的
  • 空字符串('')的长度是0,是不占用空间的
  • 字母和数字每个都占用一个长度
  • 汉字在字段中存储一个字的长度为3

二、区别

  • 在进行 count() 统计某列时候,如果用 Null 值系统会自动过滤掉,但是空字符会进行统计。不过 count(*) 会被优化,直接返回总行数,包括 Null 值。
  • 当使用 is not null 或者 is null 时,只能查出字段中没有不为 null 的或者为 null 的,不能查出空字符
  • 判断 Null 用 is null 或 is not null, SQL可以使用 ifnull 函数,将 null 转换为 ''空字符,然后判断空字符用 = '' 或者 <>'' 来进行处理。

说明:
IFNULL(expression, alt_value)
IFNULL有两个参数, 如果第一个参数字段不是NULL,则返回第一个字段的值。 否则,IFNULL函数返回第二个参数的值(默认值)。

三、实例

1、新建一张表 test,并插入4行数据

2、 首先比较一下,空字符('')和空值(null)查询方式的不同

select * from test where col_a = '';

select * from test where col_a is null;

由此可见,null 和 '' 的查询方式不同。而且比较字符 = > < <> 不能用于查询 null,如果需要查询空值(null),需要使用 is null 和 is not null。

3、第二种比较,参与运算

select col_a + 1 from test where id = '4'

select col_b + 1 from test where id = '4'

由此可见,空值(null)不能参与任何计算,因为空值参与任何计算都为空。所以,当程序业务中存在计算的时候,需要特别注意。

如果非要参与计算,需使用 ifnull 函数,将 null 转换为 '' 空字符才能正常计算。

4、第三种比较,统计数量

select count(col_a) from test;

select count(col_b) from test;

由此可见,当统计数量的时候。空值(null)并不会被当成有效值去统计。

同理,sum() 求和的时候,null也不会被统计进来,这样也能理解。

四、总结

  • 所以在设置默认值的时候,尽量不要使用 null 当默认值。如果是 varchar 类型,默认值用空字符(‘’)会更好一些。带有 null 的默认值还是可以走索引的,只是会影响效率。
  • 在设置字段的时候,可以给字段设置成 not null,因为 not null 这个概念和默认值是不冲突的。

五、参考文档

  • mysql 空值(null)和空字符('')的区别

【MySQL】空值(Null)和空字符串(‘’)的区别相关推荐

  1. Oracle中Null与空字符串''的区别

    http://read.newbooks.com.cn/info/172049.html Oracle中Null与空字符串''的区别 来源:CSDN   作者:jsjzzh   发布时间:2007-1 ...

  2. Django与SQL语言中——NULL与空字符串的区别

    SQL有指定空值的独特方式,它把空值叫做NULL. Null在数据库中表示 不知道的数据,主要有3种意思: 1)知道数据存在,但不知道具体值. 2)不知道数据是否存在. 3)数据不存在. 在SQL中, ...

  3. Oracle中Null与空字符串' '的区别

    含义解释: 问:什么是NULL? 答:在我们不知道具体有什么数据的时候,也即未知,可以用NULL,我们称它为空,ORACLE中,含有空值的表列长度为零. ORACLE允许任何一种数据类型的字段为空,除 ...

  4. null和空字符串('')的区别

    在Java开发中,我们需要常常判断是否值为null,尤其在xml数据交互过程中,我们判断某一个报文的值是否为null时候,经常需要用三目运算判断:如果值为null,则赋值空字符串(insert数据库时 ...

  5. oracle数据库null和空字符串区别,null和空字符串('')的区别

    在Java开发中,我们需要常常判断是否值为null,尤其在xml数据交互过程中,我们判断某一个报文的值是否为null时候,经常需要用三目运算判断:如果值为null,则赋值空字符串(insert数据库时 ...

  6. Oracle 与 Mysql NULL值,空字符串''的区别

    Oracle(null等同于空字符'') 1.oracle插入空字符串默认替换成null 2.oracle查询(null和被替换的空字符)时使用 is null/is not null 3.使用聚合函 ...

  7. Mysql 中null与空字符串陷进

    前阵子在更新数据库时候碰见一个新增表的语句,发现插入的空值自动填充的值,很是费解,下面我们先来说说案例,以下是模仿的测试: 首先创建一个表:create table ceshi(ID INT ,cre ...

  8. Java关于null和空字符串““的区别

    我们都知道当我们new一个String类型的变量是时,用的是 String str = null:而不是Sting str ="": null不会分配内存空间,相当于什么都没有. ...

  9. 后台获取前台传递参数为null和空字符串的区别,以及sql拼接之if判断

    1.获取到的值为null 当URL路径中没有"name"属性,此时后台使用request.getParameter("name")获取到的值为null; 2.获 ...

  10. oracle和mysql空字符串_Oracle数据库中对null值的排序及mull与空字符串的区别

    order by排序之null值处理方法在对业务数据排序时候,发现有些字段的记录是null值,这时排序便出现了有违我们使用习惯的数据大小顺序问题.在Oracle中规定,在Order by排序时缺省认为 ...

最新文章

  1. 全球及中国电镀砂轮行业盈利模式分析与十四五投资规划研究报告2021年版
  2. 【转】IAR与Keil两款开发工具区别
  3. 4. MyBatis几个可以优化的地方
  4. 静态类 c# 1615139615
  5. awk调用shell命令的两种方法:system与print
  6. Cocoa Touch事件处理流程--响应者链
  7. (转)Hibernate框架基础——一对多关联关系映射
  8. sublime与python交互
  9. python 写xml_使用python 写xml文件
  10. 钩子的应用: 程序运行监视
  11. 让django完成翻译,迁移数据库模型
  12. Visual Studio:注释/取消注释快捷键
  13. python实现csdn博客下载
  14. 思科刀片服务器系统,思科 UCS B 系列刀片服务器
  15. 豆瓣top250电影数据分析
  16. 【搜狗输入法安装包文件有异常,错误码:2,现在终止安装】解决办法
  17. 线下实体零售门店如何做好会员运营管理系统?
  18. 1w字详解 ClickHouse漏斗模型实践方案(收藏)
  19. 【电子电路】ADC芯片如何选型
  20. 国际清算银行称:央行数字货币可能导致银行挤兑

热门文章

  1. 华为p30怎样找回计算机,在华为p30中进行连接电脑的详细步骤
  2. 从cmd 连接mysql_通过cmd命令连接mysql
  3. 微软车库与微软黑客松:微软复兴的“秘密武器”
  4. 一支不足百人的团队创造了ChatGPT :90后挑大梁,应届生11人,华人抢眼
  5. 手把手教你在阿里云ECS上搭建惊艳的博客
  6. idea git 合并分支 冲突处理
  7. 读取和写入注册表RegOpenKeyEx、RegCloseKeyEx、RegQueryValueEx、RegCreateKeyEx、RegSetValue
  8. 互联网,只有信仰才能坚持!
  9. MySQL聚簇索引 非聚簇索引 覆盖索引与回表
  10. 【花雕】全国青少年机器人技术一级考试模拟题(之一)