iis服务器助手广告广告
返回顶部
首页 > 资讯 > 数据库 >区分MySQL中的空值(null)和空字符('')
  • 806
分享到

区分MySQL中的空值(null)和空字符('')

MySQL空值MySQL空字符MySQLnull 2022-05-23 04:05:02 806人浏览 八月长安
摘要

日常开发中,一般都会涉及到数据库增删改查,那么不可避免会遇到Mysql中的NULL和空字符。 空字符('')和空值(null)表面上看都是空,其实存在一些差异: 定义: 空值(NULL)的长度是NULL,不确

日常开发中,一般都会涉及到数据库增删改查,那么不可避免会遇到Mysql中的NULL和空字符。
空字符('')和空值(null)表面上看都是空,其实存在一些差异:

定义:

  • 空值(NULL)的长度是NULL,不确定占用了多少存储空间,但是占用存储空间的
  • 字符串('')的长度是0,是不占用空间的

通俗的讲:

空字符串('')就像是一个真空转态杯子,什么都没有。
空值(NULL)就像是一个装满空气的杯子,含有东西。
二者虽然看起来都是空的、透明的,但是有着本质的区别。

区别:

  1. 在进行count()统计某列时候,如果用null值系统会自动忽略掉,但是空字符会进行统计。不过count(*)会被优化,直接返回总行数,包括null值。
  2. 判断null用is nullis not nullsql可以使用ifnull()函数进行处理;判断空字符用=''或者!=''进行处理。
  3. 对于timestamp数据类型,插入null值会是当前系统时间;插入空字符,则出现0000-00-00 00:00:00

实例:

  • 新建一张表test_ab,并插入4行数据。

CREATE TABLE test_ab (id int,
	col_a varchar(128),
	col_b varchar(128) not null
);

insert test_ab(id,col_a,col_b) values(1,1,1);
insert test_ab(id,col_a,col_b) values(2,'','');
insert test_ab(id,col_a,col_b) values(3,null,'');
insert test_ab(id,col_a,col_b) values(4,null,1);

mysql> select * from test_ab;
+------+-------+-------+
| id  | col_a | col_b |
+------+-------+-------+
|  1 | 1   | 1   |
|  2 |    |    |
|  3 | NULL |    |
|  4 | NULL | 1   |
+------+-------+-------+
4 rows in set (0.00 sec)
  • 首先比较一下,空字符('')和空值(null)查询方式的不同:

mysql> select * from test_ab where col_a = '';
+------+-------+-------+
| id  | col_a | col_b |
+------+-------+-------+
|  2 |    |    |
+------+-------+-------+
1 row in set (0.00 sec)

mysql> select * from test_ab where col_a is null;
+------+-------+-------+
| id  | col_a | col_b |
+------+-------+-------+
|  3 | NULL |    |
|  4 | NULL | 1   |
+------+-------+-------+
2 rows in set (0.00 sec)

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

  • 第二种比较,参与运算

mysql> select col_a+1 from test_ab where id = 4;
+---------+
| col_a+1 |
+---------+
|  NULL |
+---------+
1 row in set (0.00 sec)

mysql> select col_b+1 from test_ab where id = 4;
+---------+
| col_b+1 |
+---------+
|    2 |
+---------+
1 row in set (0.00 sec)

由此可见,空值(null)不能参与任何计算,因为空值参与任何计算都为空。
所以,当程序业务中存在计算的时候,需要特别注意。
如果非要参与计算,需使用ifnull函数,将null转换为''才能正常计算。

  • 第三种比较,统计数量

mysql> select count(col_a) from test_ab;
+--------------+
| count(col_a) |
+--------------+
|      2 |
+--------------+
1 row in set (0.00 sec)

mysql> select count(col_b) from test_ab;
+--------------+
| count(col_b) |
+--------------+
|      4 |
+--------------+
1 row in set (0.00 sec)

由此可见,当统计数量的时候。空值(null)并不会被当成有效值去统计。
同理,sum()求和的时候,null也不会被统计进来,这样就能理解,
为什么null计算的时候结果为空,而sum()求和的时候结果正常了。

结论:

所以在设置默认值的时候,尽量不要用null当默认值,如果字段是int类型,默认为0;如果是varchar类型,默认值用空字符串('')会更好一些。带有null的默认值还是可以走索引的,只是会影响效率。当然,如果确认该字段不会用到索引的话,也是可以设置为null的。

在设置字段的时候,可以给字段设置为 not null ,因为 not null 这个概念和默认值是不冲突的。我们在设置默认值为('')的时候,虽然避免了null的情况,但是可能存在直接给字段赋值为null,这样数据库中还是会出现null的情况,所以强烈建议都给字段加上 not null。

类似这样的:


mysql> alter table test_ab modify `col_b` varchar(128) NOT NULL DEFAULT '';
Query OK, 0 rows affected (0.00 sec)
Records: 0 Duplicates: 0 Warnings: 0

mysql> desc test_ab;
+-------+--------------+------+-----+---------+-------+
| Field | Type     | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| id  | int     | YES |   | NULL  |    |
| col_a | varchar(128) | YES |   | NULL  |    |
| col_b | varchar(128) | NO  |   |     |    |
+-------+--------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

尽管在存储空间上,在索引性能上可能并不比空字符差,但是为了避免其身上特殊性,给项目带来不确定因素,因此建议默认值不要使用 NULL。

以上就是区分MySQL中的空值(null)和空字符('')的详细内容,更多关于MySQL 空值和空字符的资料请关注自学编程网其它相关文章!

您可能感兴趣的文档:

--结束END--

本文标题: 区分MySQL中的空值(null)和空字符('')

本文链接: https://www.lsjlt.com/news/9868.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL中空值Null和空字符怎么使用
    这篇文章主要介绍了MySQL中空值Null和空字符怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇MySQL中空值Null和空字符怎么使用文章都会有所收获,下面我们一起来看看吧。1. 空值 Null 和空...
    99+
    2023-06-30
  • MySQL中空值Null和空字符‘‘的具体使用
    目录1. 空值 Null 和空字符 ''2. 空值 Null 和空字符 '' 在查询方式上的对比2.1. 创建 SQL 脚本2.2. 查询 usern...
    99+
    2024-04-02
  • mysql中null和空值的区别
    null表示未知且无意义的值,而空值表示未赋值或未初始化的值。两者的差异在于:语义差异、数据库处理方式、查询优化影响、数据完整性影响,可通过mysql提供的操作符区分。 MySQL 中...
    99+
    2024-05-01
    mysql
  • mysql中null和空值的区别
    null表示未知且无意义的值,而空值表示未赋值或未初始化的值。两者的差异在于:语义差异、数据库处理方式、查询优化影响、数据完整性影响,可通过mysql提供的操作符区分。 MySQL 中...
    99+
    2024-05-01
    mysql
  • MySQL中的空值、null和(N/A)区别
    1 Empty Set和N/A 先讲Empty Set和 N/A,他们其实是一回事,MySQL中Empty Set是指当查询结果为空时,MySQL返回的结果集。 1.1 出现情况 一般情况下,由于一些...
    99+
    2023-09-27
    mysql 数据库
  • Mysql中的NULL和空值实例分析
    本篇内容介绍了“Mysql中的NULL和空值实例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!字段属性的”空值”与”NULL”不一样相信...
    99+
    2023-06-27
  • oracle中空字符串跟null区别
    在 oracle 中,空字符串是一个长度为 0 的字符串,表示没有字符;而 null 是一个特殊值,表示缺少或未知的值。空字符串与 null 具有不同的比较行为、函数和操作符表现,以及存...
    99+
    2024-05-07
    oracle
  • MySQL的空值和NULL的区别是什么
    这篇文章给大家分享的是有关MySQL的空值和NULL的区别是什么的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。从本质上区别:1、空值不占空间2、null值占空间通俗的讲:空值就像...
    99+
    2024-04-02
  • php中null和空字符串有什么区别
    php中null和空字符串有什么区别?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。空字符串''和NULL的区别PHP中空字符串和NULL都是以值...
    99+
    2023-06-15
  • mysql怎么判断null和空字符串
    mysql判断null和空字符串的方法:例如,创建一个user表:id主健 name字段可以为空。插入两条数据,代码:insert into user values('33',null); ##创建一条name为空的数据insert int...
    99+
    2024-04-02
  • MySQL中的NULL和空串的区别
    本篇内容主要讲解“MySQL中的NULL和空串的区别”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MySQL中的NULL和空串的区别”吧! ...
    99+
    2024-04-02
  • NULL与MySQL空字符串有什么区别
    本篇内容主要讲解“NULL与MySQL空字符串有什么区别”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“NULL与MySQL空字符串有什么区别”吧!  下述语句是...
    99+
    2024-04-02
  • mysql中空值与null的区别有哪些
    小编给大家分享一下mysql中空值与null的区别有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!mysql中在进行count()统计某列的记录数的时候,如果...
    99+
    2023-06-14
  • Oracle中Null与空字符串的区别是什么
    本篇文章为大家展示了Oracle中Null与空字符串的区别是什么,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。含义解释: 问:什么是NULL? ...
    99+
    2024-04-02
  • oracle中的null和空的区别
    null 表示缺失或未知,而空表示空字符串或零值。在查询中,null 与任何值都不相等,空值与相同类型的空值相等;字段必须显式定义为允许 null,而空值可以存在于任何字段中。理解 nu...
    99+
    2024-05-03
    oracle
  • 浅谈MySQL查询出的值为NULL和N/A和空值的区别
    目录例子表区别N/A的展示形式NULL的展示形式空值的展示形式TIPS例子表 CREATE TABLE `book` ( `id` int(11) NOT NULL AUTO_INCREMENT, `book_...
    99+
    2023-01-05
    MySQL查询值为NULL和N/A和空值 MySQLNULLN/A空值
  • oracle中null和空字符串是等价的嘛
    oracle 中,null 和空字符串不相等。null 代表未知值,与任何值都不相等;空字符串是一个长度为 0 的字符串,可以与其他空字符串相等。null 与空字符串的差异在于:null...
    99+
    2024-05-03
    oracle
  • MySQL判断列的值既不为NULL又不为空字符串
    在MySQL中,可以使用IS NULL和IS NOT NULL操作符来判断一个字符串是否为NULL,可以使用’'(空字符串)或NULL与字符串进行比较来判断一个字符串是否为空。 例如,假设我们有一个名...
    99+
    2023-09-03
    mysql 数据库 java
  • 详解java中String值为空字符串与null的判断方法
    Java空字符串与null的区别 1、类型 null表示的是一个对象的值,而不是一个字符串。例如声明一个对象的引用,String a=null。 “”表示的是一个空字符串,也就是...
    99+
    2024-04-02
  • Python中怎么判断字符串是否为空和null
    本篇文章给大家分享的是有关Python中怎么判断字符串是否为空和null,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1、使用字符串长度判断len(s) ==0 则字符串为空#...
    99+
    2023-06-01
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作