数据库中的空值与NULL的区别以及python中的NaN和None

 我来答
爱车先锋队
2017-11-06 · TA获得超过954个赞
知道小有建树答主
回答量:1057
采纳率:98%
帮助的人:1109万
展开全部

数据库里面的”空值”有两种:空字符(“”)、空值(NULL)。 
两种存储方式在数据库中都很常见,实际中根据业务或者个人习惯可以用这两种方式来存储“空值”。那这两种到底有什么区别,下面通过例子直接来展示:

-- 创建表testcreate table `test` (`id`  int not null ,`name`  varchar(255) null ,`date`  timestamp null ,`class`  varchar(255) null );insert into test (id,name,date,class) values (1,'张三','2017-03-01','a班');insert into test (id,name,date,class) values (2,'李四','2017-03-02','');insert into test (id,name,class) values (3,'王五','c班');select * from test;1234567891011

select count(date),count(class) from test;1

看到这里应该明白了,直观看空字符和NULL的区别在于,在做count计算的时候,空字符也会被计算在里面,而NULL不会。有些同学在使用where is null 和is not null 的时候也要注意数据库中的“空值”是空字符还是NULL。不然统计结果可能并不是你想要的。

平时有些数据是需要借助python 来处理的,我们来看看python获取数据的时候有哪些需要注意的。 
python有两种方式获取数据: 
1. 一种是把数据从MYSQL 中导出到txt或者csv,然后本地读取; 
2. 另一种是python直接链接数据库,读取数据; 
先看第一种:导出到csv,python 读取

 
第二种: 

两种方式读取的数据居然不一样!

  • 第一种把数据从MYSQL导出后,python读取时,空值即为NULL;

  • 第二种链接数据库后,python能读取表结构,数据库的NULL对应列表中的None以及pandas中的NaN(如果字段类型是时间,则为NaT)。而数据库中的空字符,则被识别为空字符。

  • 个人理解的等式

  • NULL(数据库)=None(python列表)=NaN(pandas)

  • 空字符(数据库)=空字符(python列表)=空字符(pandas)

  • 从csv中获取数据时:空值(csv)=NULL(数据库)=NaN(pandas)

  • 转为csv数据时:数据库中的NULL\空字符和pandas中的NaN\空字符,都变成csv中的空值

  • 在python处理完数据后,往数据库写数据的时候也一样。注意注意!

漆个葫芦娃
生活家

2017-10-20 · 关注于个人成长
知道小有建树答主
回答量:169
采纳率:100%
帮助的人:63.1万
展开全部
数据库中空字符和NULL的区别在于:
在做count计算的时候,空字符也会被计算在里面,而NULL不会。有些同学在使用where is null 和is not null 的时候也要注意数据库中的“空值”是空字符还是NULL。不然统计结果可能并不是你想要的。
python有两种方式获取数据:
1. 一种是把数据从MYSQL 中导出到txt或者csv,然后本地读取;
2. 另一种是python直接链接数据库,读取数据;

第一种把数据从MYSQL导出后,python读取时,空值即为NULL;

第二种链接数据库后,python能读取表结构,数据库的NULL对应列表中的None以及pandas中的NaN(如果字段类型是时间,则为NaT)。而数据库中的空字符,则被识别为空字符。
望采纳!
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式