算術運算符
| 運算符 | 含義 | 示例 | 結果 | 備註 |
| + | 加 | a+5 | 29 | |
| - | 減 | a-5 | 19 | |
| * | 乘 | a*2 | 48 | |
| / | 除(浮點) | a/3 | 8.0000 | 保留4位小數 |
| DIV | 整除 | a DIV 3 | 8 | 等價 FLOOR(a/b) |
| % | 取模 | a%5 | 4 | 負數規則:符號同被除數 |
| MOD() | 取模函數 | MOD(a,5) | 4 | 同% |
關鍵:除數為0結果為NULL,不報錯。`SELECT 1/0 → NULL`
比較運算符
數值/字符串比較
a=24, a<12, a>40, a>=24, a<=24, a!=24, a<>24, a<=>24
=、<=>:等值比較。<=>(NULL安全等值):`NULL <=> NULL → 1`,`NULL = NULL → NULL`
!=、<>:不等值,同義
- 字符串比較:`'ha' <> 'ha' → 0`,`'xa' = 'xa' → 1`
範圍/集合判斷
BETWEEN ... AND:包含邊界。`a BETWEEN 15 AND 30`
IN (val1, val2...):集合成員。`a IN (24,12,22)`
NOT BETWEEN、NOT IN:取反。注意NOT IN含NULL陷阱
模糊匹配
LIKE:`_`單字符,`%`任意長度。`'beijing' LIKE 'b%g' → 1`
NOT LIKE:取反
NULL判斷
IS NULL、IS NOT NULL:唯一合法NULL判斷方式
ISNULL()函數:等價IS NULL
邏輯運算符
| 運算符 | 別名 | 真值表(1真 0假 NULL未知) |
| AND / && | 邏輯與 | 1&&1=1, 1&&0=0, 1&&NULL=NULL, 0&&NULL=0 |
| OR / || | 邏輯或 | 0||0=0, 1||NULL=1, 0||NULL=NULL |
| NOT / ! | 邏輯非 | !1=0, !0=1, !NULL=NULL |
| XOR | 邏輯異或 | 1 XOR 0=1, 1 XOR 1=0, NULL XOR 1=NULL |
短路求值:MySQL支持,`FALSE AND ...`不再評估右側。
位運算符(少用但強大)
& 按位與、`|` 按位或、`^` 按位異或、`~` 按位取反、`<<` 左移、`>>` 右移
- 應用:權限位掩碼、標籤位圖、布隆過濾器底層
類型轉換隱式規則(避坑指南)
- 數字比較字符串:字符串轉數字。`'123' = 123 → 1`,`'abc' = 0 → 1`(非數字開頭轉0)
- 日期比較字符串:字符串轉日期
- 最佳實踐:顯式CAST/CONVERT,避免隱式轉換導致索引失效與邏輯錯誤
運算符是SQL表達式的基因片段,精通優先級、類型轉換、NULL三值邏輯,能寫出正確、高性能、可維護的查詢條件。
- 上一篇文章: MySQL數據增刪改全攻略:INSERT/UPDATE/DELETE 批量操作、條件控制與TRUNCATE對比實戰
- 下一篇文章: MySQL版本查看五大方式:命令行、狀態命令、系統函數、幫助輸出與包管理器驗證
Copyright ©
程式碼之家 All Rights Reserved