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

MySQL NULL 值完全指南:觀念釐清、比較陷阱與實務處理

     編輯:MySQL 資料庫相關知識

NULL ≠ 空字串

INSERT INTO t(phone) VALUES (NULL);   -- 電話未知
INSERT INTO t(phone) VALUES ('');     -- 無電話

兩者語意完全不同,切勿混淆。

NULL 比較鐵律

  • NULL = NULL → NULL(非 TRUE)
  • 任何與 NULL 運算結果皆為 NULL(如 1+NULL、CONCAT('a',NULL))。
  • 查詢 NULL 必須用 IS NULL / IS NOT NULL,= NULL 永不命中。

實用函數與運算子

語法說明
IS NULL / IS NOT NULL判斷 NULL
IFNULL(expr, val)expr 為 NULL 回傳 val
COALESCE(v1,v2,...)回傳第一個非 NULL 值
<=>NULL-safe 等值比較(NULL=<=>NULL 為 TRUE)

索引與 NULL

  • MyISAM、InnoDB、MEMORY 允許索引含 NULL 欄位;其他引擎需定義 NOT NULL。
  • 複合索引中任一欄為 NULL,該列不進索引。

彙總函數行為

  • COUNT(*) 計算列數(含 NULL)。
  • COUNT(col)、SUM()、AVG()、MIN()、MAX() 忽略 NULL。

排序與分組

  • ORDER BY:NULL 排最前;DESC 時排最後。
  • GROUP BY、DISTINCT:所有 NULL 視為同一群組。

特殊欄位自動填充

  • TIMESTAMP 插入 NULL → 當前日期時間。
  • AUTO_INCREMENT 整數欄插入 NULL → 下一序號。

載入資料時的 NULL

LOAD DATA INFILE:檔案中用 \N 或 NULL 字面值表示 NULL;空欄位預設寫入空字串。

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