MySQL
MySQL
-- 默认替换全部出现位置;match_type 传 'i' 忽略大小写
SELECT REGEXP_REPLACE('13800001111', '(\d{3})\d{4}(\d{4})', '$1****$2');
-- '138****1111'
SELECT REGEXP_REPLACE('aXbXc', 'x', '-', 1, 0, 'i'); -- 'a-b-c'PostgreSQL
PostgreSQL
-- 默认只替换第 1 处,需要 'g' 才全部替换;捕获组用 \1
SELECT regexp_replace('13800001111', '(\d{3})\d{4}(\d{4})', '\1****\2');
SELECT regexp_replace('aXbXc', 'x', '-', 'gi');| 默认次数 | MySQL 替换全部;PostgreSQL 只替换首处(加 'g') |
|---|---|
| 捕获组引用 | MySQL 用 $1;PostgreSQL 用 \1 |
| 引擎 | MySQL 8 用 ICU 正则;PostgreSQL 用 ARE 正则,语法细节有差异 |