運算子優先序 (高→低)
1. := (賦值)
2. ||, OR, XOR
3. &&, AND
4. BETWEEN, CASE, WHEN, THEN, ELSE
5. =, <=>, >=, >, <=, <, <>, !=, IS, LIKE, REGEXP, IN
6. | (位元 OR)
7. & (位元 AND)
8. <<, >> (位移)
9. -, + (加減)
10. *, /, DIV, %, MOD (乘除)
11. ^ (位元 XOR)
12. - (負號), ~ (位元 NOT)
13. !, NOT (邏輯非)
14. BINARY, COLLATE
算術運算子
SELECT 1+2, 5-3, 2*4, 10/3, 10 DIV 3, 10%3, MOD(10,3);
-- 3, 2, 8, 3.3333, 3, 1, 1
邏輯運算子
-- NOT
SELECT NOT 0, NOT 1, NOT NULL; -- 1, 0, NULL
SELECT !0, !1, !NULL; -- 同左
-- AND
SELECT 1 AND 1, 0 AND 1, 1 AND NULL; -- 1, 0, NULL
SELECT 1 && 1, 0 && 1; -- 同左
-- OR
SELECT 1 OR 0, 0 OR 0, 1 OR NULL; -- 1, 0, NULL
SELECT 1 || 0, 0 || 0; -- 同左
-- XOR
SELECT 1 XOR 1, 0 XOR 0, 1 XOR 0; -- 0, 0, 1
SELECT 1 ^ 1, 0 ^ 0, 1 ^ 0; -- 同左 (位元 XOR)
比較運算子
-- 等值
SELECT 1=0, 1=1, NULL=NULL; -- 0, 1, NULL
-- 安全等值 (<=>) : NULL<=>NULL 為 1
SELECT 1<=>1, 2<=>0, 0<=>0, NULL<=>NULL; -- 1, 0, 1, 1
-- 大小
SELECT 'a'<'b', 'abc'>'a', 1>0; -- 1, 1, 1
SELECT 'bdf'<='b', 0<=1; -- 0, 1
-- 範圍/集合
SELECT 10 BETWEEN 10 AND 20; -- 1
SELECT 1 IN (1,2,3), 't' IN ('t','a');-- 1, 1
-- NULL 判斷
SELECT 0 IS NULL, NULL IS NULL; -- 0, 1
SELECT 0 IS NOT NULL, NULL IS NOT NULL;-- 1, 0
-- 模糊/正則
SELECT 'abc' LIKE 'a%', 'abc' REGEXP '^a'; -- 1, 1
位元運算子
SELECT 2 & 3; -- 2 (10 & 11 = 10)
SELECT 2 | 3; -- 3 (10 | 11 = 11)
SELECT 2 ^ 3; -- 1 (10 ^ 11 = 01)
SELECT ~1; -- -2 (補數)
SELECT 100 >> 3; -- 12 (右移 3 位 = 除 8)
SELECT 100 << 3; -- 800 (左移 3 位 = 乘 8)
實戰提醒
AND 優先於 OR:a OR b AND c 等同 a OR (b AND c)
= 在 SQL 中是比較,賦值用 :=
IS NULL / IS NOT NULL 專判 NULL,不可用 = NULL
<=> 安全等值可用於索引查詢 (MySQL 5.7+)