You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在MySQL中用REGEXP_REPLACE将多个字符替换为指定字符?

解决REGEXP_REPLACE替换特殊字符为下划线的需求

我来帮你搞定这个问题!你需要把字符串中的空格、减号、括号、点号这些特殊字符逐个替换为下划线,从给出的示例来看,每个特殊字符都要单独变成一个下划线(比如空格+减号+空格会转化成三个下划线)。

优化你的正则表达式写法

你当前的思路是对的,但可以用正则的字符类来简化语句,让表达式更清晰易读:

SELECT regexp_replace(name, '[ .\-()]', '_') FROM db.table;

这个写法的优势在于:

  • 字符类[]把所有需要匹配的特殊字符整合在一起,不用再用|分隔,代码更简洁
  • 把减号\-放在字符类里,避免被误解为范围符号(也可以把减号放在字符类的开头或结尾,这样不用转义,比如[ .()\-])
  • 在字符类里,括号不需要额外转义,不过转义也不会影响结果

验证匹配效果

用你的示例数据测试的话,完全符合预期:

  • 原字符串:Pune Municipal Corp - Water → 输出:Pune_Municipal_Corp___Water
  • 原字符串:Kerala State Electricity Board Ltd. (KSEBL) → 输出:Kerala_State_Electricity_Board_Ltd___KSEBL_
  • 原字符串:Paschim Gujarat Vij Company Limited (PGVCL) → 输出:Paschim_Gujarat_Vij_Company_Limited__PGVCL_

如果你用的是某些特定的SQL方言(比如PostgreSQL),这个写法完全适用;如果是其他方言,只要支持标准正则字符类,都能正常工作。

内容的提问来源于stack exchange,提问作者Thivagar Moorthy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 10:17:34