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

如何在PostgreSQL中用单次regexp_replace替换多个字符串值

单步REGEXP_REPLACE实现多替换方案

你可以通过构造包含所有待替换模式的正则表达式,结合条件替换逻辑,用一次REGEXP_REPLACE调用完成所有操作。以下是针对主流数据库的实现:

PostgreSQL

SELECT REGEXP_REPLACE(
    'fd_val__pharmacy_1_2_3_text',
    '(fd_)|(__)|(_[123])',
    CASE
        WHEN \2 IS NOT NULL THEN '_'
        ELSE ''
    END,
    'g'
) AS result;

正则逻辑说明:

  • (fd_):匹配前缀fd_,替换为空
  • (__):匹配双下划线,替换为单下划线
  • (_[123]):匹配_1、_2、_3,替换为空
  • 'g'参数表示全局替换所有匹配项

MySQL 8.0+

SELECT REGEXP_REPLACE(
    'fd_val__pharmacy_1_2_3_text',
    '(fd_)|(__)|(_[123])',
    CASE 
        WHEN SUBSTRING_INDEX(SUBSTRING_INDEX(REGEXP_SUBSTR('fd_val__pharmacy_1_2_3_text', '(fd_)|(__)|(_[123])', 1, ORDINAL_POSITION), '|', -1), ')', 1) = '__' THEN '_'
        ELSE ''
    END,
    1, 0
) AS result;

两种写法执行后都会得到预期结果:val_pharmacy_text

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 10:10:18