Mysql中空字元和空值

2022-03-23 04:00:34 字數 1152 閱讀 7462

mysql中空字元和空值的區別,一直都知道mysql中空字串(」)和空值(null)之間有區別,但是沒好好研究過。直到專案上,這兩個概念被我搞混了之後才想起來研究一下。

根據網上的說法,空字串(」)是不占用空間,而空值(null)是占用空間。(這裡我不太明白,因為我的理解是,字串都會有乙個結束符,這個結束符不會占用空間嗎??)。

雖然有不明白的地方,但是不影響這篇文章對這兩個值的分析。

為了分析區別,這裡新建一張表 test_null,並插入4行資料。

create table test_null (

id int,

value_1 varchar(128),

value_2 varchar(128) not null

)這裡需要說一下,將字段設定為 not null之後是可以插入空字元(」)的。影響的只是不能插入空值(null)。

首先比較一下,空字元(」)和空值(null)查詢方式的不同。

由此可見,null 和 」的查詢方式不同。而且比較字元 『=』』>』 『』是不能用於查詢null。如果需要查詢空值(null),需使用is null 和is not null。

第二種比較,參與運算。

由此可見,空值(null)是不能參與任何計算,因為空值參與任何計算都為空。所以,當程式業務中存在計算的時候,需要特別注意。如果非要參與計算,需使用ifnull函式,將null轉換為」才能正常計算。

第三種比較,統計數量

由此可見,當統計數量的時候。空值(null)並不會被當成有效值去統計。同理,sum()求和的時候,null也不會被統計進來,這樣就能理解,為什麼null計算的時候結果為空,而sum()求和的時候結果正常了。

以上對比,算得上是程式中經常會遇到但又不容易注意的問題。

網路上,針對這兩個值。有一種說法會比較好理解。在存**號碼欄位中,空值(null)代表你沒有**,而空字串(」)則代表,你有**但是沒有填寫。或者理解,填寫了又刪除掉。

還有一種理解方式。null是尚未定義的值,表示未知。而」,確定為乙個空字串。所以未知的值,無法進行各種比較(大於,小於,等於),也不能用於計算(加減乘除)。

我的理解是,不考慮是否占用記憶體。null代表什麼都沒有,」代表的就是乙個空白的字串。所以,null什麼都沒有就不能用於比較。

無論怎麼理解,都需要記住這兩個值的區別。避免在專案中碰到錯誤。

Mysql中空字元 和空值的區別

一直都知道mysql中空字串 和空值 null 之間有區別,但是沒好好研究過。直到專案上,這兩個概念被我搞混了之後才想起來研究一下。根據網上的說法,空字串 是不占用空間,而空值 null 是占用空間。這裡我不太明白,因為我的理解是,字串都會有乙個結束符,這個結束符不會占用空間嗎?雖然有不明白的地方,...

python刪除列表中空字元

近期,處理資料中遇到了刪除列表中空字元的需求。coding utf 8 目的 刪除none和 table1 地區 none,none,公司名稱 註冊資本 成立時間 銀監會批覆時間 none,none,none,none,none,億元 none,none,none 福建 福建省閩投資產管理 15 n...

空字串 轉為空值問題

一 單獨對空字串用replace np.nan 函式會報錯 a 1,2,3,4,5,6,7,1,b pd.series a c pd.dataframe b t c二 series用replace np.nan 時就ok了!三 pd中的特殊字元處理 資料預處理 轉化百分比字元型為數字型 有個問題就是...