首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 運算符實戰指南:比較、邏輯、位運算與正則全解析

     編輯:MySQL 綜合教學

MySQL 運算符實戰指南:比較、邏輯、位運算與正則全解析

熟練掌握 MySQL 運算符能讓 SQL 查詢更簡潔、高效。本文系統梳理常用運算符的語法、行為差異與實戰技巧。

一、安全等於運算符(<=>)

功能同 =,但能正確處理 NULL 比較:

  • 兩操作數均為 NULL → 返回 1(而非 NULL)。
  • 一操作數為 NULL → 返回 0(而非 NULL)。

適用場景: 需在 WHERE 條件中精確匹配含 NULL 的列時。

二、LEAST / GREATEST 運算符

LEAST(val1, val2, ..., valn) — 返回最小值

  • 數值參數 → 返回最小數值。
  • 字符串參數 → 返回字母序最靠前的字符。
  • 任意參數為 NULL → 返回 NULL(無法比較大小)。

GREATEST(val1, val2, ..., valn) — 返回最大值

  • 規則同 LEAST,方向相反。
  • 任意參數為 NULL → 返回 NULL。

三、正則運算符(REGEXP)

MySQL 內建正則支援,比 LIKE 更強大靈活。語法:expr REGEXP pattern,匹配返回 1,否則 0;任意操作數為 NULL 則結果為 NULL。

常用元字符速查

元字符含義範例
^匹配字符串開頭'abc' REGEXP '^a' → 1
$匹配字符串結尾'abc' REGEXP 'c$' → 1
.匹配任意單字符'abc' REGEXP '.b' → 1
[...]匹配括號內任一字符'abc' REGEXP '[ac]' → 1
-字符範圍[a-z]匹配小寫字母,[0-9]匹配數字
*前一字符出現 0 次或多次'abbbc' REGEXP 'ab*c' → 1

實戰範例

SELECT 'ssky' REGEXP '^s',   -- 1 (以 s 開頭)
       'ssky' REGEXP 'y$',   -- 1 (以 y 結尾)
       'ssky' REGEXP '.sky', -- 1 (任意字符+sky,長度 4)
       'ssky' REGEXP '[ab]'; -- 0 (不含 a 或 b)

四、邏輯運算符

運算符別名說明
AND&&邏輯與
OR||邏輯或
XOR—異或

XOR 真值表

  • 任一操作數為 NULL → 返回 NULL。
  • 兩操作數同為非 0 或同為 0 → 返回 0。
  • 一操作數為 0,另一為非 0 → 返回 1。
SELECT 1 XOR 1,   -- 0 (同為非0)
       0 XOR 0,   -- 0 (同為0)
       1 XOR 0,   -- 1 (一零一非零)
       1 XOR NULL,-- NULL
       1 XOR 1 XOR 1; -- 1 (左結合:(1 XOR 1)=0, 0 XOR 1=1)

等價轉換: a XOR b ≡ (a AND NOT b) OR (NOT a AND b)

五、位運算符

較少用,簡介如下:

運算符功能
|按位或
&按位與
^按位異或
<<按位左移
>>按位右移
~按位取反

技巧: 使用 BIN(n) 查看十進制數的二進制表示,如 SELECT BIN(20) → 10100。

六、特殊字符轉義(插入數據前必做)

字符轉義寫法
單引號 '\'
雙引號 "\"
反斜槓 \\\
回車\r
換行\n
製表符\t
退格符\b

範例: INSERT INTO t(name) VALUES('\''); 成功插入單引號。

總結: 善用 <=> 處理 NULL,用 REGEXP 替代複雜 LIKE,理解 XOR 與位運算邏輯,寫出更健壯的 SQL。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved