MySQL™ 參考手冊(使用NULL值)

使用NULL值

在你習慣以前,NULL值可能會使人驚訝,從概念上講,NULL表示「缺失的未知值」,而且與其餘值的處理方式略有不一樣。mysql

要測試NULL,請使用IS NULLIS NOT NULL運算符,以下所示:sql

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

你不能使用算術比較運算符(如=<<>)來測試NULL,要本身演示,請嘗試如下查詢:segmentfault

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中,0NULL表示false,其餘任何表示都是true,布爾運算的默認真值爲1code

GROUP BY中,兩個NULL值被視爲相等。字符串

在執行ORDER BY時,若是你執行ORDER BY ... ASC,則首先顯示NULL值,若是執行ORDER BY ... DESC,則爲最後一個值。get

使用NULL時常見的錯誤是假設沒法將零或空字符串插入定義爲NOT NULL的列中,但事實並不是如此,這些其實是值,而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列,由於它們其實是NOT NULLco


上一篇:日期計算

相關文章
相關標籤/搜索