首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 空值查詢完全指南:IS NULL 與 IS NOT NULL 正確用法

     編輯:MySQL 資料庫相關知識

在 SQL 中,NULL 代表「未知」或「不存在」,而非空字串或零值。查詢空值必須使用 IS NULL / IS NOT NULL,不可使用 = NULL 或 != NULL。本文詳細說明正確語法與常見誤區。

建立測試資料

mysql> UPDATE test SET t_birth = NULL WHERE t_id = 1;
Query OK, 1 row affected (0.02 sec)

mysql> SELECT * FROM test;
+------+--------+----------------------------------+------------+
| t_id | t_name | t_password                       | t_birth    |
+------+--------+----------------------------------+------------+
|    1 | name1  | 12345678901234567890123456789012 | NULL       |
|    2 | name2  | 12345678901234567890123456789012 | 2013-01-01 |
+------+--------+----------------------------------+------------+

查詢空值(IS NULL)

mysql> SELECT * FROM test WHERE t_birth IS NULL;
+------+--------+----------------------------------+---------+
| t_id | t_name | t_password                       | t_birth |
+------+--------+----------------------------------+---------+
|    1 | name1  | 12345678901234567890123456789012 | NULL    |
+------+--------+----------------------------------+---------+

查詢非空值(IS NOT NULL)

mysql> SELECT * FROM test WHERE t_birth IS NOT NULL;
+------+--------+----------------------------------+------------+
| t_id | t_name | t_password                       | t_birth    |
+------+--------+----------------------------------+------------+
|    2 | name2  | 12345678901234567890123456789012 | 2013-01-01 |
+------+--------+----------------------------------+------------+

核心語法總結

查詢目的正確語法錯誤示範
欄位為 NULLWHERE col IS NULLWHERE col = NULL ❌
欄位不為 NULLWHERE col IS NOT NULLWHERE col != NULL ❌

常見誤區與補充

  • 大小寫不敏感:NULL、null、Null 皆可。
  • 空字串 ≠ NULL:'' 是長度為 0 的字串,IS NULL 不會匹配。
  • 聚合函數行為:COUNT(col) 忽略 NULL,COUNT(*) 計算所有列。
  • 排序順序:ORDER BY col ASC 時 NULL 排最前,DESC 排最後。
  • 唯一索引:允許多筆 NULL 值(視為彼此不相等)。

實務應用範例

-- 找出未設定生日的用戶
SELECT * FROM users WHERE birthday IS NULL;

-- 統計有效郵箱數量
SELECT COUNT(email) FROM users WHERE email IS NOT NULL;

-- COALESCE 替換 NULL 顯示預設值
SELECT name, COALESCE(phone, '未提供') AS phone FROM users;

正確處理 NULL 是資料查詢準確性的基石。請養成使用 IS NULL / IS NOT NULL 的習慣,並善用 COALESCE、IFNULL 等函數處理顯示邏輯,避免因三值邏輯導致的業務錯誤。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved