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

Oracle单SQL语句实现按位置替换字符串分隔符

单条SQL语句实现Oracle字符串分隔符替换需求

可以通过嵌套使用REGEXP_REPLACE结合正则正向预查,一次性满足两种格式的转换需求:

实现语句

SELECT REGEXP_REPLACE(REGEXP_REPLACE('a|b|c', '\|(?=[^|]+\|)', ','), '\|', '&') AS result FROM dual;

逻辑说明

  1. 内层REGEXP_REPLACE:使用正则\|(?=[^|]+\|)匹配**后面仍存在分隔符|**的第一个|,将其替换为,。
    • 对于a|b|c,会匹配第一个|,替换后得到a,b|c;
    • 对于a|b,该正则无匹配项,字符串保持a|b不变。
  2. 外层REGEXP_REPLACE:将所有剩余的|替换为&。
    • 处理a,b|c得到a,b&c;
    • 处理a|b得到a&b。

扩展测试

可以通过多值测试验证所有场景:

SELECT 
  original_str,
  REGEXP_REPLACE(REGEXP_REPLACE(original_str, '\|(?=[^|]+\|)', ','), '\|', '&') AS converted_str
FROM (
  SELECT 'a|b|c' AS original_str FROM dual
  UNION ALL SELECT 'x|y' FROM dual
  UNION ALL SELECT 'no_separator' FROM dual
);

执行结果:

ORIGINAL_STRCONVERTED_STR
ab
xy
no_separatorno_separator

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 23:45:43