萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

MySQL 運算子優先序與實戰範例:算術、邏輯、比較、位元運算完整速查表

運算子優先序 (高→低)

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+)
copyright © 萬盛學電腦網 all rights reserved