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

MySQL 運算符大全:安全等於、LEAST/GREATEST、REGEXP、邏輯/位運算與轉義字符

     編輯:MySQL 綜合教學

MySQL 運算符大全:安全等於、LEAST/GREATEST、REGEXP、邏輯/位運算與轉義字符

MySQL 擁有幾個獨有或與 SQL Server 行為不同的運算符,熟悉它們能寫出更簡潔、高效的查詢。本文系統梳理並附實測結果。

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

相當於 =,但能正確處理 NULL:

  • NULL <=> NULL → 1 (真)
  • NULL <=> 1 → 0 (假)
  • 1 <=> 1 → 1
SELECT NULL <=> 1, 1 <=> 0, NULL <=> NULL;
-- 結果:0, 0, 1

場景:WHERE col <=> val 可直接匹配 NULL,無需 IS NULL 分支。

二、LEAST / GREATEST:多值極值

  • LEAST(v1, v2, ...):返回最小值;任一參數為 NULL → 結果 NULL。
  • GREATEST(v1, v2, ...):返回最大值;任一參數為 NULL → 結果 NULL。
SELECT LEAST(2,0), LEAST('a','b','c'), LEAST(10,NULL);
-- 0, 'a', NULL

SELECT GREATEST(2,0), GREATEST('a','b','c'), GREATEST(10,NULL);
-- 2, 'c', NULL

字符串按字典序比較;數值按數值比較;混合類型會隱式轉換,建議保持同類型。

三、REGEXP 正則匹配

語法:expr REGEXP pattern,匹配返回 1,否則 0;任一方為 NULL → NULL。

元字符含義示例
^行首'abc' REGEXP '^a' → 1
$行尾'abc' REGEXP 'c$' → 1
.任意單字符'abc' REGEXP '.bc' → 1
[...]字符集合'abc' REGEXP '[ab]' → 1
[a-z]範圍'abc' REGEXP '[a-c]' → 1
*前字符 0+ 次'abc' REGEXP 'ab*c' → 1
SELECT 'ssky' REGEXP '^s', 'ssky' REGEXP 'y$', 'ssky' REGEXP '.sky', 'ssky' REGEXP '[ab]';
-- 1, 1, 1, 0

比 LIKE 強大得多,支援複雜模式提取、校驗(如手機號、郵箱、身份證)。

四、邏輯運算符差異

XOR 真值表:

SELECT 1 XOR 1, 0 XOR 0, 1 XOR 0, 1 XOR NULL, 1 XOR 1 XOR 1;
-- 0, 0, 1, NULL, 1
  • 兩邊同真/同假 → 0
  • 一真一假 → 1
  • 含 NULL → NULL
  • a XOR b ≡ (a AND NOT b) OR (NOT a AND b)

五、位運算符

運算MySQLSQL Server
ANDAND / &&AND / & (位與)
OROR / ||OR / | (位或)
XORXOR^ (位異或)
運算符含義示例 (BIN(20)=10100)
|位或20 | 3 = 23 (10111)
&位與20 & 3 = 0 (00000)
^位異或20 ^ 3 = 23 (10111)
<<左移20 << 1 = 40 (101000)
>>右移20 >> 1 = 10 (1010)
~位取反~20 = -21 (補碼)

SQL Server 僅支援 & | ^ ~,無移位運算符(需用 POWER(2,n) 模擬)。

六、特殊字符轉義(字串字面值中)

目標字符MySQL 轉義SQL Server 轉義
單引號 '\''' (兩個單引號)
雙引號 "\"""
反斜槓 \\\無需 (單引號字串中)
換行\nCHAR(10)
回車\rCHAR(13)
製表\tCHAR(9)
退格\bCHAR(8)
-- MySQL 插入包含單引號的字串
INSERT INTO t(name) VALUES('O\'Reilly');
-- SQL Server
INSERT INTO t(name) VALUES('O''Reilly');

七、總結

  • <=> 簡化 NULL 判斷;LEAST/GREATEST 替代 CASE 多值極值;REGEXP 解決複雜模式匹配。
  • 邏輯運算符 &&/|| 讓代碼更像 C/Java 風格;XOR 適用於奇偶校驗、開關切換邏輯。
  • 位運算在權限位圖、標籤集合、IP 掩碼計算中極高效。
  • 轉義差異是遷移腳本常見坑點,務必統一用參數化查詢 (PreparedStatement) 避免手工拼接。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved