我正在努力使用 REGEXP_REPLACE。目前我正在尝试处理类似于以下字符串的字符串:
ABC|||CDE|||||DEF||||||556|||.|.|
我想要实现的是每组只有一个管道。因此目标字符串是:
ABC|CDE|DEF|556|.|.|
这可以使用 REGEXP_REPLACE 或类似的函数来完成吗?如何? 请注意,我无法控制字符串中字符的位置,并且不会有模式(例如“每五个字符有一个管道”)。我只需要立即删除管道重复项。
答案 0 :(得分:3)
使用 REGEXP_REPLACE(value,'(\|)+','|')
。例如
SELECT REGEXP_REPLACE('ABC|||CDE|||||DEF|||||||556||||.|.|','(\|)+','|') newval
FROM dual
答案 1 :(得分:2)
当然 正则表达式更漂亮,但是 - 为了娱乐,为了表明好的,旧的 -i
可以完成这项工作。
REPLACE