mysql刪除欄位為空白的資料詳解

來源:互聯網
上載者:User

空值與NULL的區別

我們先來理解mysql中空值與NULL的區別是什麼吧

一些剛剛接觸MySQL的孩子,經常會錯誤的認為NULL與Null 字元串’  ’是相同的。這看似是一件不重要的事情,但是在MySQL中,這兩者是完全不同的。NULL是指沒有值,而”則表示值是存在的,只不過是個空值。。

這就相當於廠子給職工分房子,一共只有一套,老張和老李都想要,可是經理告訴老張,下次有您的房子,可是老李壓根就沒人搭理他。所以老張的房子是“空”的,因為這是空白支票,不過畢竟經理張口了,而老李的房子就是NULL的,因為根本就沒有人考慮過他。


一些根本不懂空值和NULL有什麼區別,誤導初學者。

所謂的NULL就是什麼都沒有,連都沒有,在字串中是結束符,但是在實體記憶體是占空間的,等於一個位元組,而NULL就是連這一個位元組都沒有。在資料庫裡是嚴格區分的,任何數跟NULL進行運算都是NULL, 判斷值是否等於NULL,不能簡單用=,而要用IS關鍵字, Mysql3.23.0或以後支援用 <=> 用來比較兩個NULL值是否相等, 即 select * from table where id <=> NULL.

為什麼會出現NULL?這是來源於資料庫的左右串連,不是憑空想出來的。比如:
A(ID, Name), B(ID, Address)
1, Name1 1, Shanghai
2, Name2 3, Beijing

當A左串連B則得到:
1, Name1, Shanghai
2, Name2, NULL

當A右串連B則得到:
1, Name1, Shanghai
3, NULL, Beijing

資料庫的欄位ID設為NOT NULL, 僅僅說明該欄位不能為NULL, 也就是說只有在
INSERT INTO table(ID) VALUES(NULL);
這種情況下資料庫會報錯,而
INSERT INTO table(ID) VALUES( ‘ ‘);
這不能說明是NULL, 資料庫系統會根據ID設的預設值填充,或者如果是自增欄位就自動加一
等預設操作。

值為NULL

delete from 表名 where 欄位名=NULL

值為""空值

delete from 表名 where 欄位名='' 

總結

判斷NULL用is null  或者 is not null。 sql語句裡可以用ifnull函數來處理
判斷Null 字元串‘’,要用 ='' 或者 <>''。sql語句裡可以用if(col,col,0)處理,即:當col為true時(非null,及非'')顯示,否則列印0

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.