回覆列表
  • 1 # 小紅的甜心

    資料庫裡面的”空值”有兩種:空字元(“”)、空值(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處理完資料後,往資料庫寫資料的時候也一樣。注意注意!

  • 中秋節和大豐收的關聯?
  • 孩子還想和原來的同桌坐到一起,我要不要和老師講一下?