NULL與MySQL空字串的區別

2021-12-30 12:11:42 字數 1583 閱讀 5546

null與mysql空字串的區別

mysql空字串和null值我們都經常會見到,但是這二者並不是乙個概念,下面就為您介紹null與mysql空字串的區別,供您參考。

對於sql的新手,null值的概念常常會造成混淆,他們常認為null與mysql空字串是相同的事。情況並非如此。例如,下述語句是完全不同的:

以下是**片段:

mysql> insert into my_table (phone) values (null); 

mysql> insert into my_table (phone) values ('');

這兩條語句均會將值插入phone(**)列,但第1條語句插入的是null值,第2條語句插入的是空字串。第1種情況的含義可被解釋為「**號碼未知」,而第2種情況的含義可被解釋為「該人員沒有**,因此沒有**號碼」。

為了進行null處理,可使用is null和is not null操作符以及ifnull()函式。

在sql中,null值與任何其它值的比較(即使是null)永遠不會為「真」。包含null的表示式總是會匯出null值,除非在關於操作符的文件中以及表示式的函式中作了其他規定。下述示例中的所有列均返回null:mysql> select null, 1+null, concat('invisible',null);

如果打算搜尋列值為null的列,不能使用expr = null測試。下述語句不返回任何行,這是因為,對於任何表示式,expr = null永遠不為「真」: mysql> select * from my_table where phone = null;

要想查詢null值,必須使用is null測試。在下面的語句中,介紹了查詢null**號碼和空**號碼的方式:

以下是**片段:

mysql> select * from my_table where phone is null; 

mysql> select * from my_table where phone = '';

更多資訊和示例:

如果你正在使用myisam、innodb、bdb、或memory儲存引擎,能夠在可能具有null值的列上增加1條索引。如不然,必須宣告索引列為not null,而且不能將null插入到列中。

用load data infile讀取資料時,對於空的或丟失的列,將用''更新它們。如果希望在列中具有null值,應在資料檔案中使用\n。在某些情況下,也可以使用文本性單詞「null」。

使用distinct、group by或order by時,所有null值將被視為等同的。

使用order by時,首先將顯示null值,如果指定了desc按降序排列,null值將最後顯示。

對於聚合(累計)函式,如count()、min()和sum(),將忽略null值。對此的例外是count(*),它將計數行而不是單獨的列值。例如,下述語句產生兩個計數。首先計數表中的行數,其次計數age列中的非null值數目:mysql> select count(*), count(age) from person;

對於某些列型別,mysql將對null值進行特殊處理。如果將null插入timestamp列,將插入當前日期和時間。如果將null插入具有auto_increment屬性的整數列,將插入序列中的下乙個編號。

空字元與空格字元 NULL 空字串

在許多的程式語言內,空字串的標記為兩個雙引號 而null又有以下理解 1.字面理解,null就是無效的 無價值的 2.在程式設計中,變數以null結尾,表示其後沒有可用的資料,資料讀取在此結束。3.null在資料庫中表示不知道 unknown 的資料,主要有3種意思 a 知道資料存在,但不知道具體值...

mysql 判斷null 和 空字串

1.在mysql中null 不能使用任何運算子與其他字段或者變數 函式 儲存過程 進行運算。若使用運算資料就可能會有問題。2.對null 的判斷 建立乙個user表 id 主健 name 可以為空 select from user insert into user values 33 null 建立...

mysql中的null與空字串的區別

null 表示 沒有對 列 變數輸入資料 空字串,則是 有對 列 變數輸入資料 區別 1 null的長度就是null,空字串的長度就是0 2 一串null資料比空字串優先排序 3 count message 會將空字串計數進去,但是不會將null資料計入 4 可以使用繫結變數搜尋某個空字串,但是不可...