博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据库中的空值与NULL的区别以及python中的NaN和None
阅读量:4211 次
发布时间:2019-05-26

本文共 1094 字,大约阅读时间需要 3 分钟。

数据库里面的”空值”有两种:空字符(“”)、空值(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;

这里写图片描述

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

这里写图片描述

直观看空字符和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中的空值

转载自;

你可能感兴趣的文章
UNIX网络编程卷1:套接字联网-第3章:套接字编程-套接字地址结构和值结果参数
查看>>
UNIX网络编程卷1:套接字联网-第3章:套接字编程-常用函数
查看>>
关于ubuntu中文件类型没有颜色区分的配置文件修改
查看>>
UNIX网络编程卷1:套接字联网-第3章:套接字编程-readn,writen函数
查看>>
UNIX网络编程卷1:套接字联网-第4章:基本TCP套接字编程1
查看>>
UNIX编程专题-POSIX信号
查看>>
UNIX编程专题-core文件的生成和调试
查看>>
UNIX高级环境编程:源码(apue)下载 编译和运行
查看>>
UNIX编程专题-可重入函数和不可重入函数
查看>>
UNIX高级环境编程-信号相关函数笔记
查看>>
unix编程专题-信号机制使用实例
查看>>
UNIX网络编程卷1:套接字联网-第5章:TCP客户/服务器程序示例
查看>>
UNIX编程专题-wait和waitpid详解
查看>>
UNIX编程专题-wait和waitpid详解2
查看>>
UNIX编程专题-服务器进程终止/服务器主机崩溃/服务器主机崩溃后重启/服务器主机关机
查看>>
UNIX编程专题-TCP连接探测详解
查看>>
UNIX编程专题-描述符集介绍和相关操作
查看>>
Linux IO模式及 select、poll、epoll详解
查看>>
UNIX编程专题-I/O复用:select、pselect、poll和epoll解析
查看>>
LINUX编程专题-I/O复用:epoll解析
查看>>