標準 SQL 中 `NULL` 代表「未知」,任何與 `NULL` 比較 (含 `NULL = NULL`) 結果均為 `NULL` (視為 false)。MySQL 提供 `<=>` (Null-safe equal) 運算符專門處理此場景。
| 運算式 | 結果 | 說明 |
|---|---|---|
| `'a' <=> 'a'` | 1 (true) | 同常規 `=` |
| `'a' <=> 'b'` | 0 (false) | 同常規 `=` |
| `'a' <=> NULL` | 0 (false) | `'a' = NULL` → NULL |
| `NULL <=> NULL` | 1 (true) | `NULL = NULL` → NULL |
`<=>` 為 MySQL 專有。跨資料庫請使用 ANSI 標準:
-- 等價轉換 col <=> val → (col = val OR (col IS NULL AND val IS NULL)) col IS NULL → col <=> NULL col IS NOT NULL → NOT (col <=> NULL)
在 MySQL 專用項目中,`<=>` 簡化 NULL 比較邏輯;追求可移植性時,請改寫為標準 `IS NULL`/`IS NOT NULL` 或 `OR` 組合。