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

MySQL 運算符實戰指南:安全比較、極值與正則匹配

     編輯:MySQL 綜合教學

MySQL 運算符實戰指南:安全比較、極值與正則匹配

在 SQL 編寫中,運算符的正確選用直接影響查詢邏輯的正確性與性能。本文通過實例演示,重點解析 <=>、LEAST/GREATEST、REGEXP 等易混淆、高頻使用的運算符。

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

標準 = 在處理 NULL 時遵循三值邏輯:NULL = NULL 結果為 NULL(非 TRUE)。而 <=> 將 NULL 視為可比較值:

  • NULL <=> NULL → 1 (TRUE)
  • NULL <=> 1 → 0 (FALSE)
  • 1 <=> 0 → 0 (FALSE)
SELECT NULL <=> NULL UNION ALL 
       SELECT NULL <=> 1 UNION ALL 
       SELECT 1 <=> 0 UNION ALL 
       SELECT NULL = NULL;

安全等於結果

應用場景:去重邏輯、關聯查詢中含 NULL 列的 JOIN 條件、WHERE col <=> val 替代 WHERE (col = val OR (col IS NULL AND val IS NULL))。

二、極值運算符 LEAST() 與 GREATEST()

1. LEAST - 取最小值

SELECT LEAST(2,0), LEAST('a','b','c','d'), LEAST(10,20,NULL);

LEAST 結果

  • 數值比較:返回 0
  • 字符串按字典序:返回 'a'
  • 含 NULL 參數直接返回 NULL

⚠ 禁忌:嚴禁混合數據類型(如數值與字符串),會報錯:

類型混合報錯

2. GREATEST - 取最大值

邏輯與 LEAST 相反,同樣遇 NULL 則 NULL:

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

GREATEST 結果

三、正則表達式運算符 REGEXP

MySQL 支持 POSIX 正則語法,常用元字符:

模式含義示例匹配
^s以 s 開頭'ssky' ✓
y$以 y 結尾'ssky' ✓
.sky任意字符 + sky'ssky' ✓
[s]*0 或多個 s'ssky' ✓(匹配開頭 ss)
SELECT 'ssky' REGEXP '^s', 
       'ssky' REGEXP 'y$', 
       'ssky' REGEXP '.sky', 
       'ssky' REGEXP '[s]*';

REGEXP 結果

性能提示:REGEXP 無法利用索引,大表查詢慎用;若僅做前綴匹配,優先用 LIKE 'prefix%' 走索引。


避坑清單

  1. NULL 比較務必用 <=> 或 IS NULL,切勿用 =。
  2. LEAST/GREATEST 參數類型必須統一,且含 NULL 直接返回 NULL。
  3. 正則匹配優先考慮 LIKE,複雜模式才用 REGEXP,並評估全表掃描代價。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved