程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> mysql刪除字段為空的數據

mysql刪除字段為空的數據

編輯:關於MYSQL數據庫

       空值與NULL的區別

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

      一些剛剛接觸MySQL的孩子,經常會錯誤的認為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函數來處理

      判斷空字符串‘’,要用 ='' 或者 <>''。sql語句裡可以用if(col,col,0)處理,即:當col為true時(非null,及非'')顯示,否則打印0

    1. 上一頁:
    2. 下一頁:
    Copyright © 程式師世界 All Rights Reserved