首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL 運算符完整實戰手冊:算術、比較、邏輯、位運算、優先級對照表

     編輯:MySQL 資料庫相關知識

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
3BETWEEN, 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。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved