mysql 8.0+中用regexp_replace删除非数字字符的正确写法是regexp_replace(col, '1', ''),其中1表示匹配所有非数字字符并替换为空字符串;该函数低版本不支持,需确保mysql版本达标。0-9 ↩

REGEXP_REPLACE在MySQL里怎么删掉非数字字符
MySQL 8.0+ 才原生支持 REGEXP_REPLACE,低版本会直接报错 FUNCTION REGEXP_REPLACE does not exist。它不是简单替换字符串,而是靠正则匹配后替换,所以得先写对模式。
想只保留数字,常见写法是:REGEXP_REPLACE(col, '[^0-9]', '')。注意 [^0-9] 中的 ^ 在方括号内表示“非”,别漏掉;写成 [^0-9]+ 也没错,但单个 + 不影响结果,只是匹配效率略高一点。
- 空格、换行、制表符都属于“非数字”,会被一并干掉
- 如果字段里有负号或小数点,
[^0-9]也会把它们删掉,要保留就得改模式,比如'[^0-9.-]'(但要注意小数点在正则里是特殊字符,放方括号里不用转义) - 匹配中文符号(如全角逗号、顿号)也得显式加进去,
[^0-9,。!?、],否则删不干净
PostgreSQL用regexp_replace处理emoji和控制字符
PostgreSQL 的函数名是小写的 regexp_replace,而且默认是区分大小写的,第三个参数 'g' 必须显式加上才能全局替换,不然只换第一个匹配项。
emoji 和不可见控制字符(比如
