數據庫里面的”空值”有兩種:空字符(“”)、空值(NULL)。
兩種存儲方式在數據庫中都很常見,實際中根據業務或者個人習慣可以用這兩種方式來存儲“空值”。那這兩種到底有什么區別,下面通過例子直接來展示:
-- 創建表test
create 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和空的差別,直觀看空字符和NULL的區別在于,在做count計算的時候,空字符也會被計算在里面,而NULL不會。有些同學在使用where is null 和is not null 的時候也要注意數據庫中的“空值”是空字符還是NULL。不然統計結果可能并不是你想要的。
平時有些數據是需要借助 來處理的,我們來看看獲取數據的時候有哪些需要注意的。
有兩種方式獲取數據:
1. 一種是把數據從MYSQL 中導出到txt或者csv,然后本地讀取;
2. 另一種是直接鏈接數據庫,讀取數據;
先看第一種:導出到csv,讀取
第二種:
兩種方式讀取的數據居然不一樣! 第一種把數據從MYSQL導出后數據庫null和空的差別,讀取時,空值即為NULL;第二種鏈接數據庫后,能讀取表結構,數據庫的NULL對應列表中的None以及中的NaN(如果字段類型是時間,則為NaT)。而數據庫中的空字符,則被識別為空字符。 個人理解的等式 在處理完數據后,往數據庫寫數據的時候也一樣。注意注意!
如果對中的None和NaN有疑問,可以看這位博主的 博文。