在本教學中,我們將介紹NULL概念,並演示如何使用SQL IS NULL和IS NOT NULL運算符來測試運算式是否為NULL。
1. 什麼是NULL?
NULL在SQL中很特殊。 NULL表示數據未知的值,可以簡單理解為表示:不適用 或不存在的值。 換句話說,NULL表示資料庫中缺少數據。
例如,如果員工沒有任何電話號碼,可以將其存儲為空字元串。 但是,如果在插入員工記錄時不知道他的電話號碼,我們將使用未知電話號碼的NULL值。
NULL值是特殊的,因為任何與NULL值的比較都不會導致true或false,但在第三個邏輯結果中:未知。
以下語句返回null值。
SELECT NULL = 5;
NULL值甚至不等於自身,如以下語句所示。
SELECT NULL = NULL;
在此示例中,結果為NULL值。
不能使用比較運算符的等於(=)將值與NULL值進行比較。 例如,以下語句將不會產生正確的結果。
SELECT
employee_id, first_name, last_name, phone_number
FROM
employees
WHERE
phone_number = NULL;
2. IS NULL 和 IS NOT NULL 運算符
要確定運算式或列的值是否為NULL,請使用IS NULL運算符,如下所示:
expression IS NULL;
如果運算式的結果為NULL,則IS NULL運算符返回true; 否則它返回false。要檢查運算式或列是否不為NULL,請使用IS NOT運算符:
expression IS NOT NULL;
如果運算式的值為NULL,則IS NOT NULL返回false; 否則它返回true;
3. SQL IS NULL和IS NOT NULL示例
在這些示例中,我們將使用示例資料庫中的employees表進行演示。
mysql> DESC employees;
+---------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+---------------+--------------+------+-----+---------+----------------+
| employee_id | int(11) | NO | PRI | NULL | auto_increment |
| first_name | varchar(20) | YES | | NULL | |
| last_name | varchar(25) | NO | | NULL | |
| email | varchar(100) | NO | | NULL | |
| phone_number | varchar(20) | YES | | NULL | |
| hire_date | date | NO | | NULL | |
| job_id | int(11) | NO | MUL | NULL | |
| salary | decimal(8,2) | NO | | NULL | |
| manager_id | int(11) | YES | MUL | NULL | |
| department_id | int(11) | YES | MUL | NULL | |
+---------------+--------------+------+-----+---------+----------------+
10 rows in set
要查找沒有電話號碼的所有員工,請使用IS NULL運算符,如下所示:

要查找具有電話號碼的所有員工,請使用IS NOT NULL,如以下語句所示:
SELECT
employee_id,
first_name,
last_name,
phone_number
FROM
employees
WHERE
phone_number IS NOT NULL;
執行上面查詢語句,得到以下結果 -
+-------------+------------+-----------+----------------+
| employee_id | first_name | last_name | phone_number |
+-------------+------------+-----------+----------------+
| 100 | Steven | Lee | 0532-86011111 |
| 101 | Neena | Wong | 0551-4243311 |
| 102 | Lex | Liang | 0571-87622362 |
| 103 | Alexander | Lee | 020-95105105 |
| 104 | Bruce | Wong | 0371-68356666 |
| 105 | David | Liang | 0512-67513131 |
| 106 | Valli | Chen | 0535-95105175 |
| 107 | Diana | Chen | 025-95105105 |
| 108 | Nancy | Chen | 0531-86012520 |
| 109 | Daniel | Chen | 021-8008207890 |
... ...
| 201 | Michael | Zhou | 010-67237328 |
| 202 | Pat | Zhou | 0755-28114518 |
| 203 | Susan | Zhou | 0755-83587526 |
| 204 | Hermann | Wu | 0513-83512816 |
| 205 | Shelley | Wu | 0898-31686222 |
| 206 | William | Wu | 022-26144822 |
+-------------+------------+-----------+----------------+
34 rows in set
通過本小節的學習,現在您應該瞭解NULL概念並知道如何使用SQL IS NULL運算符來檢查值是否為NULL值。
上一篇:
SQL Like運算符
下一篇:
SQL Not運算符
