MySQL使用 SQL SELECT 指令及 WHERE 子句來讀取資料表中的資料,但是當提供的查詢條件欄位為 NULL 時,該指令可能就無法正常運作。
為了處理這種情況,MySQL提供了三大運算符:
IS NULL: 當列的值是NULL,此運算子傳回true。
IS NOT NULL: 當欄位的值不為NULL, 運算子傳回true。
關於 NULL 的條件比較運算是比較特殊的。你不能使用 = NULL 或 != NULL 在欄位中尋找 NULL 值 。
在MySQL中,NULL值與任何其它值的比較(即使是NULL)永遠回傳false,即 NULL = NULL 回傳false 。
MySQL中處理NULL使用IS NULL和IS NOT NULL運算子。
在命令提示字元中使用 NULL 值
以下實例中假設資料庫 RUNOOB 中的表 tcount_tbl 含有兩個欄位 runoob_author 和 runoob_count, runoob_count 中設定插入NULL值。
嘗試以下實例:
MariaDB [RUNOOB]> select * from tcount_tbl;
+---------------+-------------- +
| runoob_author | runoob_count |
+---------------+--------------+
| mahran | 20 |
| mahran 20 |
| mahran NULL |
| Jen | NULL |
| Gill | 20 | | 1 | 1 |
+---------------+----- ---------+
6 rows in set (0.00 sec)
MariaDB [RUNOOB]> SELECT * FROM tcount_tbl WHERE runoob_count != NULL;Empty set (0.00 sec)
使用IS NULL和IS NOT NULL,如下實例:
+---------------+----- ---------+
| runoob_author | runoob_count |+---------------+--------------+
| mahran | NULL |
| Jen | NULL |
+---------------+------+
2 NULL |
+---------------+------+
2 5 set set in----------+ 0.00 sec)
MariaDB [RUNOOB]> SELECT * FROM tcount_tbl where runoob_count IS NOT NULL;
+---------------+------------ --+
| runoob_author | runoob_count |
+---------------+--------------+
| mahran | 20 |
| Gill | 20 |
| John Poul | 1 | --------+
4 rows in set (0.00 sec)
使用PHP腳本處理NULL 值
{ $sql ='SELECT runoob_author, runoob_count FROM tcount_tbl. mysql_select_db('RUNOOB');$retval = mysql_query( $sql, $conn );if(! $retval ){die('Could not get data: '. mysql_error());}while($row = mym_$ { echo "Author:{$row['runoob_author']}