<=> 是 MySQL 專有的「空值安全等值」運算子,解決 = 無法比較 NULL 的痛點。
| 運算式 | 結果 | 說明 |
|---|---|---|
'a' = 'a' | 1 (TRUE) | 標準等值 |
'a' = 'b' | 0 (FALSE) | 標準等值 |
'a' = NULL | NULL (UNKNOWN) | 標準比較失效 |
NULL = NULL | NULL (UNKNOWN) | 標準比較失效 |
'a' <=> 'a' | 1 (TRUE) | 空值安全 |
'a' <=> 'b' | 0 (FALSE) | 空值安全 |
'a' <=> NULL | 0 (FALSE) | 空值安全 |
NULL <=> NULL | 1 (TRUE) | 空值安全 |
WHERE col <=> ?(參數可能為 NULL)。ON t1.col <=> t2.col。IS NULL 分支判斷。-- 等價於 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 <=> NULLIS NOT NULL ≡ NOT (col <=> NULL)注意:<=> 僅 MySQL 支援,跨資料庫專案請用標準寫法或封裝在方言層。
<=> 讓 NULL 比較變得直觀:NULL 安全等於 NULL 為真,非 NULL 安全等於 NULL 為假。適合內部工具、MySQL 鎖定專案;開源/多資料庫專案請用標準 IS DISTINCT FROM 或显式 IS NULL 組合。