熟練掌握 MySQL 運算符能讓 SQL 查詢更簡潔、高效。本文系統梳理常用運算符的語法、行為差異與實戰技巧。
<=>)功能同 =,但能正確處理 NULL 比較:
NULL → 返回 1(而非 NULL)。NULL → 返回 0(而非 NULL)。適用場景: 需在 WHERE 條件中精確匹配含 NULL 的列時。
LEAST(val1, val2, ..., valn) — 返回最小值GREATEST(val1, val2, ..., valn) — 返回最大值LEAST,方向相反。REGEXP)MySQL 內建正則支援,比 LIKE 更強大靈活。語法:expr REGEXP pattern,匹配返回 1,否則 0;任意操作數為 NULL 則結果為 NULL。
| 元字符 | 含義 | 範例 |
|---|---|---|
^ | 匹配字符串開頭 | 'abc' REGEXP '^a' → 1 |
$ | 匹配字符串結尾 | 'abc' REGEXP 'c$' → 1 |
. | 匹配任意單字符 | 'abc' REGEXP '.b' → 1 |
[...] | 匹配括號內任一字符 | 'abc' REGEXP '[ac]' → 1 |
- | 字符範圍 | [a-z]匹配小寫字母,[0-9]匹配數字 |
* | 前一字符出現 0 次或多次 | 'abbbc' REGEXP 'ab*c' → 1 |
SELECT 'ssky' REGEXP '^s', -- 1 (以 s 開頭)
'ssky' REGEXP 'y$', -- 1 (以 y 結尾)
'ssky' REGEXP '.sky', -- 1 (任意字符+sky,長度 4)
'ssky' REGEXP '[ab]'; -- 0 (不含 a 或 b)
| 運算符 | 別名 | 說明 |
|---|---|---|
| AND | && | 邏輯與 |
| OR | || | 邏輯或 |
| XOR | — | 異或 |
SELECT 1 XOR 1, -- 0 (同為非0)
0 XOR 0, -- 0 (同為0)
1 XOR 0, -- 1 (一零一非零)
1 XOR NULL,-- NULL
1 XOR 1 XOR 1; -- 1 (左結合:(1 XOR 1)=0, 0 XOR 1=1)
等價轉換: a XOR b ≡ (a AND NOT b) OR (NOT a AND b)
較少用,簡介如下:
| 運算符 | 功能 |
|---|---|
| | 按位或 |
& | 按位與 |
^ | 按位異或 |
<< | 按位左移 |
>> | 按位右移 |
~ | 按位取反 |
技巧: 使用 BIN(n) 查看十進制數的二進制表示,如 SELECT BIN(20) → 10100。
| 字符 | 轉義寫法 |
|---|---|
單引號 ' | \' |
雙引號 " | \" |
反斜槓 \ | \\ |
| 回車 | \r |
| 換行 | \n |
| 製表符 | \t |
| 退格符 | \b |
範例: INSERT INTO t(name) VALUES('\''); 成功插入單引號。
總結: 善用 <=> 處理 NULL,用 REGEXP 替代複雜 LIKE,理解 XOR 與位運算邏輯,寫出更健壯的 SQL。