1. 算術運算符
SELECT 1+2; -- 3
SELECT 2-1; -- 1
SELECT 2*3; -- 6
SELECT 5/3; -- 1.6667
SELECT 5 DIV 2; -- 2 (整除)
SELECT 5%2, MOD(5,2); -- 1, 1 (取模)
2. 比較運算符
SELECT 1=0, 1=1, NULL=NULL; -- 0, 1, NULL
SELECT 1<>0, 1<>1, NULL<>NULL; -- 1, 0, NULL
SELECT 1<=>1, 2<=>0, 0<=>0, NULL<=>NULL; -- 1, 0, 1, 1 (安全等於,NULL<=>NULL 為真)
SELECT 'a'<'b', 'a'<'a', 1<2; -- 1, 0, 1
SELECT 'bdf'<='b', 'b'<='b', 0<1; -- 0, 1, 1
SELECT 'a'>'b', 'abc'>'a', 1>0; -- 0, 1, 1
SELECT 'a'>='b', 'abc'>='a', 1>=0, 1>=1; -- 0, 1, 1, 1
SELECT 10 BETWEEN 10 AND 20, 9 BETWEEN 10 AND 20; -- 1, 0
SELECT 1 IN (1,2,3), 't' IN ('t','a','b','l','e'), 0 IN (1,2); -- 1, 1, 0
SELECT 0 IS NULL, NULL IS NULL; -- 0, 1
SELECT 0 IS NOT NULL, NULL IS NOT NULL; -- 1, 0
SELECT 123456 LIKE '123%', 123456 LIKE '%123%', 123456 LIKE '%321%'; -- 1, 1, 0
SELECT 'abcdef' REGEXP 'ab', 'abcdefg' REGEXP 'k'; -- 1, 0
3. 邏輯運算符
SELECT NOT 0, NOT 1, NOT NULL; -- 1, 0, NULL
SELECT !0, !1, !NULL; -- 1, 0, NULL
SELECT (1 AND 1), (0 AND 1), (3 AND 1), (1 AND NULL); -- 1, 0, 1, NULL
SELECT (1 && 1), (0 && 1), (3 && 1), (1 && NULL); -- 同 AND
SELECT (1 OR 0), (0 OR 0), (1 OR NULL), (1 OR 1), (NULL OR NULL); -- 1, 0, NULL, 1, NULL
SELECT (1 || 0), (0 || 0), (1 || NULL), (1 || 1), (NULL || NULL); -- 同 OR
SELECT (1 XOR 1), (0 XOR 0), (1 XOR 0), (0 XOR 1), (NULL XOR 1); -- 0, 0, 1, 1, NULL
SELECT (1 ^ 1), (0 ^ 0), (1 ^ 0), (0 ^ 1), (NULL ^ 1); -- 位異或,同 XOR
4. 位運算符
SELECT 2&3; -- 2 (10 & 11 = 10)
SELECT 2&3&4; -- 0
SELECT 2|3; -- 3 (10 | 11 = 11)
SELECT 2^3; -- 1 (位異或)
SELECT ~1, ~18446744073709551614; -- 位取反
SELECT 100>>3; -- 12 (右移 3 位)
SELECT 100<<3; -- 800 (左移 3 位)
5. 運算符優先級(高→低)
| 優先級 | 運算符 |
| 最高 | := |
| 1 | ||, OR, XOR |
| 2 | &&, AND |
| 3 | BETWEEN, CASE, WHEN, THEN, ELSE |
| 4 | =, <=>, >=, >, <=, <, <>, !=, IS, LIKE, REGEXP, IN |
| 5 | | |
| 6 | & |
| 7 | <<, >> |
| 8 | -, + |
| 9 | *, /, DIV, %, MOD |
| 10 | ^ |
| 11 | - (unary), ~ (unary) |
| 12 | !, NOT |
| 最低 | BINARY, COLLATE |
實戰提醒
AND 優先於 OR:a OR b AND c 等價 a OR (b AND c)。
= 與 := 混淆:SET @a = 1 (賦值),SELECT @a := 1 (賦值並回傳)。
NULL 參與任何比較(除 <=>, IS NULL, IS NOT NULL)結果為 NULL(非真非假)。
- 字串比較預設不分大小寫(
_ci collation),需區分時用 COLLATE utf8mb4_bin。