3.3.4.6 如何使用NULL值

3.3.4.6 Working with NULL Values

初學時NULL可能會令人驚訝,但習慣了就好了~~。在概念上,NULL表示“缺少的未知值”,MySQL對它與其他值有不同的處理方式。

爲了測試值是否爲NULL,請使用IS NULL 和 IS NOT NULL操作符,像下面這樣:

mysql> SELECT 1 IS NULL, 1 IS NOT NULL;
+-----------+---------------+
| 1 IS NULL | 1 IS NOT NULL |
+-----------+---------------+
|         0 |             1 |
+-----------+---------------+

你不能使用數學比較符號來比較NULL值,如:=, <, <> 。你可以嘗試下面的查詢語句來驗證這個說法:

mysql> SELECT 1 = NULL, 1 <> NULL, 1 < NULL, 1 > NULL;
+----------+-----------+----------+----------+
| 1 = NULL | 1 <> NULL | 1 < NULL | 1 > NULL |
+----------+-----------+----------+----------+
|     NULL |      NULL |     NULL |     NULL |
+----------+-----------+----------+----------+

因爲任何與NULL值的數學比較結果仍是NULL,所以你不能得到有意義的結果。

在MySQL中,0或NULL意味着false,其它值意味着true。在boolean操作中,true的默認值是1.

這也是爲什麼前面的章節中,我們使用death IS NOT NULL來驗證動物是否已經死亡,而不是death <> NULL。

在GROUP BY中,兩個NULL值認爲是相等的。

當使用ORDER BY … ASC時,NULL值會排在前面,使用ORDER BY … DESC時,NULL值會排在後面。

一個常見的關於NULL的錯誤是認爲一個定義了NOT NULL的列不能插入0或空字符串,但是實際情況並非如此。0和空字符串都是實際值,而NULL是“沒有值”。你可以像下面這樣使用IS [NOT] NULL來測試:

mysql> SELECT 0 IS NULL, 0 IS NOT NULL, '' IS NULL, '' IS NOT NULL;
+-----------+---------------+------------+----------------+
| 0 IS NULL | 0 IS NOT NULL | '' IS NULL | '' IS NOT NULL |
+-----------+---------------+------------+----------------+
|         0 |             1 |          0 |              1 |
+-----------+---------------+------------+----------------+

因此,向NOT NULL列插入0或空字符串是完全可以的,因爲它們是 NOT NULL。更多信息參見“Problems with NULL Values

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章