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

MySQL 學習筆記(五):特有運算符深度解析——安全等於、LEAST/GREATEST、REGEXP、XOR、位運算與轉義字符

     編輯:MySQL 綜合教學

前言

MySQL 擁有多個 SQL Server 不支援的特有運算符,掌握它們能寫出更簡潔、高效的 SQL。本文逐一實測解析。

1. 安全等於運算符 <=>

  • 功能:同 =,但可正確比較 NULL。
  • 規則:NULL <=> NULL → 1 (true);NULL <=> 非NULL → 0 (false);非NULL <=> 非NULL → 同 =。
  • 場景:WHERE col <=> @param 替代 WHERE (col = @param OR (col IS NULL AND @param IS NULL))。

2. LEAST() / GREATEST() 多值極值

SELECT LEAST(10, 5, 20);      -- 5
SELECT GREATEST('b', 'a', 'c'); -- 'c' (字典序)
SELECT LEAST(1, NULL);        -- NULL (任一參數為 NULL 結果為 NULL)
  • 支援數值、字串、日期混合比較(隱式轉型)。
  • 注意 NULL 傳播特性,必要時用 COALESCE 兜底。

3. REGEXP 正則表達式匹配

'sky' REGEXP '^s';      -- 1 (以 s 開頭)
'sky' REGEXP 'y$';      -- 1 (以 y 結尾)
'sky' REGEXP '.ky';     -- 1 (任意單字符 + ky)
'sky' REGEXP '[ab]';    -- 0 (不含 a 或 b)
'sky' REGEXP '[a-z]';   -- 1 (含小寫字母)
  • 常用元字符:^ $ . [range] * + ? {n,m} | (group)。
  • MySQL 8.0 升級為 ICU 正則引擎,語法更標準、支援 Unicode 屬性。
  • 效能較 LIKE 低,大表慎用或建立全文索引。

4. 邏輯異或 XOR

ABA XOR B
110
000
101
011
NULL1NULL
  • 等價於 (A AND NOT B) OR (NOT A AND B)。
  • 場景:互斥標誌檢查、奇偶校驗。

5. 位運算符

SELECT 5 | 3;   -- 7  (按位或)
SELECT 5 & 3;   -- 1  (按位與)
SELECT 5 ^ 3;   -- 6  (按位異或)
SELECT 5 << 1;  -- 10 (左移)
SELECT 5 >> 1;  -- 2  (右移)
SELECT ~5;      -- -6 (按位取反,補碼)
  • 配合 BIN() 查看二進制:SELECT BIN(20); -- 10100。
  • 應用:位掩碼權限、標籤集合、布隆過濾器雛形。

6. 字符串轉義字符(INSERT 時必須)

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

SQL Server 使用雙單引號 '' 表示單引號,MySQL 僅支援反斜槓轉義(或 NO_BACKSLASH_ESCAPES SQL 模式下雙單引號)。

實戰範例:插入包含特殊字符的文本

INSERT INTO `articles` (`title`, `content`) VALUES
('O\'Reilly', 'Line1\nLine2\tTabbed');
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved