首页/数据/SQL 速查/REGEXP 正则匹配
本包目录(311 条)

REGEXP 正则匹配

按正则表达式匹配字符串:MySQL 用 REGEXP/RLIKE 运算符与 REGEXP_* 函数族,PostgreSQL 用 ~ 系列运算符,大小写规则各自不同。

SQL 速查数据更新于 2026-10-12

MySQL 8 示例

MySQL 8 示例
SELECT * FROM users WHERE name REGEXP '^A[0-9]{3}$';
SELECT REGEXP_REPLACE('a-b-c', '-', '_');          -- a_b_c
SELECT REGEXP_SUBSTR('order-2024-01', '[0-9]{4}'); -- 2024

PostgreSQL 示例

PostgreSQL 示例
SELECT * FROM users WHERE name ~ '^A[0-9]{3}$';    -- 区分大小写
SELECT * FROM users WHERE name ~* '^a[0-9]{3}$';   -- 不区分大小写
SELECT regexp_replace('a-b-c', '-', '_', 'g');
MySQLREGEXP / RLIKE;REGEXP_LIKE、REGEXP_REPLACE、REGEXP_SUBSTR、REGEXP_INSTR(8.0)
PostgreSQL~ 区分大小写、~* 不区分、!~ 取反;regexp_replace / regexp_matches
索引正则条件通常无法使用常规索引

易错点

  • MySQL 的 REGEXP 大小写敏感性与列排序规则相关,不要默认它区分大小写
  • 正则写得太宽会退化成全表逐行计算,只在大表先用前置条件缩小范围后再用

数据来源与参考

  • MySQL 8.0 Reference Manual · Regular Expressions
  • PostgreSQL Documentation · Regular Expression Matching
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌