首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL <=> 空值安全等值運算子用法詳解與最佳實踐

     編輯:MySQL 綜合教學

MySQL <=> 空值安全等值運算子用法詳解與最佳實踐

<=> 是 MySQL 專有的「空值安全等值」運算子,解決 = 無法比較 NULL 的痛點。

核心差異

運算式結果說明
'a' = 'a'1 (TRUE)標準等值
'a' = 'b'0 (FALSE)標準等值
'a' = NULLNULL (UNKNOWN)標準比較失效
NULL = NULLNULL (UNKNOWN)標準比較失效
'a' <=> 'a'1 (TRUE)空值安全
'a' <=> 'b'0 (FALSE)空值安全
'a' <=> NULL0 (FALSE)空值安全
NULL <=> NULL1 (TRUE)空值安全

適用場景

  • WHERE 條件中欄位或參數可能為 NULL,需統一邏輯:WHERE col <=> ?(參數可能為 NULL)。
  • JOIN ON 條件雙邊可能含 NULL:ON t1.col <=> t2.col。
  • 動態 SQL 構建,避免 IS NULL 分支判斷。

標準 SQL 替代寫法(可移植)

-- 等價於 col <=> val
WHERE (col = val OR (col IS NULL AND val IS NULL))
-- 或
WHERE NOT (col IS DISTINCT FROM val)  -- PostgreSQL/SQL Server/MySQL 8.0+

相關運算子對照

  • IS NULL ≡ col <=> NULL
  • IS NOT NULL ≡ NOT (col <=> NULL)

注意:<=> 僅 MySQL 支援,跨資料庫專案請用標準寫法或封裝在方言層。

總結

<=> 讓 NULL 比較變得直觀:NULL 安全等於 NULL 為真,非 NULL 安全等於 NULL 為假。適合內部工具、MySQL 鎖定專案;開源/多資料庫專案請用標準 IS DISTINCT FROM 或显式 IS NULL 組合。

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