Mysql中空字元 和空值的區別

2021-08-02 11:11:04 字數 1732 閱讀 9737

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

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

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

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

這裡需要說一下,將字段設定為 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中空字元和空值的區別,一直都知道mysql中空字串 和空值 null 之間有區別,但是沒好好研究過。直到專案上,這兩個概念被我搞混了之後才想起來研究一下。根據網上的說法,空字串 是不占用空間,而空值 null 是占用空間。這裡我不太明白,因為我的理解是,字串都會有乙個結束符,這個結束符不會...

空字串 轉為空值問題

一 單獨對空字串用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中的特殊字元處理 資料預處理 轉化百分比字元型為數字型 有個問題就是...

Mysql中空格與空字串的問題

mysql中空格與空字串查詢時混淆的問題 在mysql中,對於一項屬性為字串型別的域element,如果其值為空字串或者是空格,在查詢時可能會出問題 執行select from table where element 或者是 select from table where element 的結果是一...