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

MySQL 正則表達式 REGEXP 完全指南:模式匹配實戰

     編輯:MySQL 綜合教學

MySQL 正則表達式 REGEXP 完全指南:模式匹配實戰

MySQL REGEXP 提供比 LIKE 更強大的模式匹配能力,支援字符類、量詞、定位符等。本文系統講解語法差異、核心元字符、實用範例。

一、REGEXP vs LIKE 關鍵差異

特性LIKEREGEXP
匹配範圍整列值(需通配符才能匹配子串)列值任意位置(子串匹配)
大小寫敏感依 collation默認不敏感,可用 BINARY 強制區分
元字符支援僅 % _完整正則語法

示例: WHERE col REGEXP 'hello' 匹配包含 "hello" 的任意行;WHERE col REGEXP BINARY 'Hello' 區分大小寫。

二、核心元字符速查表

元字符說明示例
.匹配任意單字符'.og' 匹配 dog, hog, mog
|或運算'cat|dog' 匹配 cat 或 dog
[...]字符集合'[456]' 匹配 4/5/6;'[a-z]' 匹配小寫字母
[^...]排除字符集合'[^0-9]' 非數字
*前字符 0 次或多次'ab*c' 匹配 ac, abc, abbc...
+前字符 1 次或多次'ab+c' 匹配 abc, abbc...
?前字符 0 次或 1 次'sticks?' 匹配 stick 或 sticks
{n}前字符恰好 n 次'[0-9]{4}' 匹配 4 位數字
{m,n}前字符 m 到 n 次'[0-9]{3,5}' 3-5 位數字
^行首定位'^abc' 以 abc 開頭
$行尾定位'abc$' 以 abc 結尾
\\轉義特殊字符'\\.' 匹配字面點號
[:class:]字符類'[[:digit:]]' = '[0-9]';'[[:alpha:]]' 字母

三、實戰範例

-- 1. 基本字符匹配
SELECT * FROM products WHERE prod_name REGEXP '1000';

-- 2. OR 匹配
SELECT * FROM products WHERE prod_name REGEXP '1000|2000';

-- 3. 字符集合:名稱包含 4 或 5 或 6
SELECT * FROM products WHERE prod_name REGEXP '[456]';

-- 4. 範圍匹配:名稱包含 1-3 任一數字
SELECT * FROM products WHERE prod_name REGEXP '[1-3]';

-- 5. 匹配特殊字符:查找包含 "." 的行
SELECT * FROM products WHERE prod_name REGEXP '\\.';

-- 6. 字符類:匹配連續 4 位數字
SELECT * FROM products WHERE prod_name REGEXP '[[:digit:]]{4}';

-- 7. 定位符:以 "abc" 開頭
SELECT * FROM products WHERE prod_name REGEXP '^abc';

-- 8. 定位符:以 "xyz" 結尾
SELECT * FROM products WHERE prod_name REGEXP 'xyz$';

-- 9. 無表測試正則(返回 0/1)
SELECT 'hello' REGEXP '^h';     -- 1
SELECT 'hello' REGEXP '^x';     -- 0
SELECT 'HELLO' REGEXP BINARY '^h'; -- 0 (區分大小寫)

四、常用字符類對照表

字符類等價說明
[[:digit:]][0-9]數字
[[:alpha:]][a-zA-Z]字母
[[:alnum:]][0-9a-zA-Z]字母數字
[[:lower:]][a-z]小寫字母
[[:upper:]][A-Z]大寫字母
[[:space:]][ \\t\\r\\n\\v\\f]空白字符
[[:punct:]]標點符號標點

五、性能提示

  • REGEXP 無法使用普通索引(MySQL 8.0+ 支援函數索引),大表全表掃描較慢。
  • 可結合 LIKE 先粗略過濾,再用 REGEXP 精確匹配。
  • 避免過度複雜的正則,必要時在應用層處理。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved