MySQL 提供了豐富的運算符來支援各類資料操作,主要分為算術運算符、比較運算符、邏輯運算符與位運算符四大類。熟練掌握這些運算符,能讓你在撰寫查詢、處理資料運算時更加得心應手。本文將透過實例逐一解析各類運算符的用法與注意事項。
MySQL 支援標準的算術運算,包括加法(+)、減法(-)、乘法(*)、除法(/,回傳商)與取模(%,回傳餘數)。所有涉及整數的運算均以 64 位精度進行。
SELECT 1+2; -- 3
SELECT 2-1; -- 1
SELECT 3*2; -- 6
SELECT 6/2; -- 3
SELECT 25%7; -- 4
特殊情況: 除數為 0 時結果為 NULL(如 SELECT 5/0;)。
字串隱性轉換規則:
'100'+'004' = 104)。'90AA'+'0' = 90、'10x'*'qwe' = 0)。比較運算的結果永遠是 1(真)、0(假)或 NULL(不確定)。常用運算符包括:
=、<>(或 !=)判斷相等與不相等>、<、>=、<= 大小比較BETWEEN ... AND ... 範圍檢查IN (...)、NOT IN (...) 集合成員檢查SELECT 6=6, 3.4=4.5, 'a'='b';
SELECT 7<>7, 7<>8, 'a'<>'b';
SELECT 100>100, 10<100;
SELECT 10 BETWEEN 0 AND 100;
SELECT 7 IN (1,2,3,4,5,6,7,8,9);
預設比較不區分大小寫,若需區分可使用 BINARY 關鍵字:SELECT BINARY 'ross' IN ('Chandler','Joey','Ross');
邏輯運算同樣回傳 1、0 或 NULL。
SELECT NOT 1, NOT 0, NOT (2=2); → 0, 1, 0SELECT (2=2) AND (900<100); → 0SELECT (2=2) OR (900<100); → 1SELECT (1=1) XOR (2=4), (1<2) XOR (9<10); → 1, 0MySQL 提供 6 個位元運算符,直接對二進制位進行操作:
| 位元 OR、& 位元 AND<< 左移、>> 右移^ 位元 XOR~ 位元取反(回傳 64 位整數)SELECT 16|32, 9|4; -- 48, 13
SELECT 30 & 10, 8 & 16; -- 10, 0
SELECT 1<<7, 64>>1; -- 128, 32
SELECT 1^0, 0^1, 17^9, 143^66; -- 1, 1, 24, 205
SELECT ~18446744073709551614, ~1; -- 1, 18446744073709551614
掌握這些運算符,能讓你在 SQL 查詢中靈活處理數值運算、條件判斷與位元級資料操作,提升開發效率與查詢效能。