REGEXP_REPLACE 替换特定的重复字符

时间:2021-04-27 17:35:58

标签: sql oracle

我正在努力使用 REGEXP_REPLACE。目前我正在尝试处理类似于以下字符串的字符串:

ABC|||CDE|||||DEF||||||556|||.|.|

我想要实现的是每组只有一个管道。因此目标字符串是:

ABC|CDE|DEF|556|.|.|

这可以使用 REGEXP_REPLACE 或类似的函数来完成吗?如何? 请注意,我无法控制字符串中字符的位置,并且不会有模式(例如“每五个字符有一个管道”)。我只需要立即删除管道重复项。

2 个答案:

答案 0 :(得分:3)

使用 REGEXP_REPLACE(value,'(\|)+','|') 。例如

SELECT REGEXP_REPLACE('ABC|||CDE|||||DEF|||||||556||||.|.|','(\|)+','|') newval
FROM dual

答案 1 :(得分:2)

当然 正则表达式更漂亮,但是 - 为了娱乐,为了表明好的,旧的 -i 可以完成这项工作。

REPLACE